Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。其特点如下:
首先我们来了解Git的安装,安装包下载地址:https://git-scm.com/downloads 下载对应版本,然后直接安装即可。
使用Git之前我们需要来了解一下Git Flow,其可以用来规范团队Git操作,让整个项目有一个清晰的流程和规范。
Master分支
Master分支,这个分支只能从其他分支合并,不能在这个分支直接修改
Develop分支
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
Feature分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
Release分支
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
Hotfix分支
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
首先我们在本地新建一个项目,然后我们就可以执行git init
命令,来让git开始管理这个文件夹,在同级目录下会出现一个隐藏的 .git 文件。
因为git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
注意: git config -–global
参数,表示这台机器上的所有的git仓库都会使用这个配置,当然也可对某个仓库指定不同的用户名和邮箱,更多参数我们也可以通过 git config
提示查看,如下:
这里我们配置如下:
一般Git的配置会有三级,首先会在当前项目的路径下找,未找到则在当前用户配置下查找,最后在Git的安装目录下进查找,如下:
在提交相关代码时,我们可以先使用 git status
来查看下当前的状态,下面就会提示我们当前一些文件状态,如下:
提交本地仓库可以两个步骤,也可以一个步骤
两步操作
git add filename
,该命令其实是将文件提交到本地的暂存区,这里参数可以是文件路径,也可以是 .
,或者 -A
,那么这两个参数有什么区别呢?
.
代表所有新增、修改文件,不包括删除文件-A
代表新增、修改、删除文件
在执行完gti add后,我们还需要执行 git commit
命令,来将暂存区的文件提交到本地仓库,一般我们会加下-m
来添加相关版本描述
git commit -Am '版本描述'
,直接将文件提交到本地仓库。执行了上述的命令后,我们在执行git status
,就会发现已经没有文件需要提交了,如下:
上述提到git管理的几类文件中,其中有一个忽略的文件,这个是指有一些我们不希望传到Git上进行管理的文件,如 .idea 、target文件下的文件,这些文件通常是不需要的,但是在上述提交版本的阶段,我们会发现这些都被上传了上去,如下:
那么这里我们就想要将其忽略,所以就需要需要目录下建立一个.gitignore文件(可以有多个,影响范围当前文件及子文件),如下:
忽略文件设置好后,那么我们该如何使用它,来将之前的已经将入本地仓库的文件撤回呢?这里可以使用 git rm -r --cached .
,如下:
然后我们在执行git status
,就会发现我们相关文件已经被过滤了,这时我们在重复上述的git add
、git commit
等命令重新提交即可。
提交后,我们可以使用 git log
命令来查看日志,如下:
另外我们还可以执行如下命令进行查看日志:
git log --oneline
简化成一行git log --oneline --graph
简化成一行,同时显示分支一般来说,我们在git版本提交的时候肯定会携带版本说明,比如该提交主要完成了什么功能,或者修复了什么bug之类的,当时有时我们还会给相关的关键提交使用 git tag -a ... xxxxxxx(提交点SHA1的ID的前7位)
打上标签
然后需要我们输入相关的信息,如下,然后输入 wq 进行保存即可
分支意味着你可以从开发主线(master)上分离开,在不影响主线的同时继续工作。
创建分支
git branch
列出当前开发所有分支(默认会有master)
git branch bxs
创建一个bxs的分支(最新提交点)
git branch bxs 提交点
创建一个bxs的分支(指定提交点)
删除分支
git branch -d bxs
删除bxs分支
切换分支
git checkout bxs
切换至bxs分支
合并分支
git checkout master
先切换这需要合并后的分支
git merge bxs
合并分支bxs至主干master,合并后的提交点属于主干master
(其实合并分支处理git merge xxx
命令,还可以通过git rabase xxx
来合并,不过一般不推荐使用该命令来合并分支,因为该命令合并分支后,是默认git log
查找不到的,需要使用git reflog
进行查看)
git reset 选项 提交点
(选项:–hard表示全恢复; 提交点:可用ID或标签)
从上述看出,我们回退版本后,再次执行git log
相关命令就会发现,回退之前的都不见了,但是要是万一我们又不想回退了怎么办呢?
这里其实我们再次回退就可以了,唯一的问题就是我们用上述命令查不到响应的提交点了,这里我们就需要使用 git reflog
命令,通过此命令可以查找到所有操作的提交点
这里首先需要去GitHub或者Gitee上注册一个账号,然后我们再在其中新建一个仓库demo,然后我们就可以获得相关的提示,然后我们就在远程仓库上新建一个master分支,如下:
远程创建完成后,我们就可以本地仓库的master分支上的代码提交到远程仓库的上,如下:(第一次会要求我们输入账号密码进行登录)
上述在我们将代码推到远程仓库之后,别人就来进行拉取我们的代码了,比如这里我们在另一个目录下,就可以使用 git clone 远程地址 本地文件路径
来clone一份新的项目代码。
另外我们还可以在本地拉取远程仓库中的修改,如下:
git fetch origin master
另外上述我们都是使用https的方式,其实还有另一中方式ssh,使用ssh方式需要公钥和私钥,需要进行一些配置,首先需要执行 ssh-keygen -t rsa -C 注册邮箱
,然后会在本地的相应位置(命令执行会提示的)生成相应的公钥和私钥,然后将其公钥需要在GitHub的Setting进行配置。