备注:
本文转载参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。
知识点
- 分支能够并行的治理版本,协同单干编写代码,在分支上实现工作,而后合并分支。
- 查看分支和以后分支:
git branch
- 创立分支
git branch <name>
- 切换分支
git checkout <name>
- 创立并切换分支
git checkout -b <name>
- 合并指定分支到以后分支,
git merge <name>
- 删除分支
git branch -d <name>
分支治理
分支相似于平行的多个干线。
分支的作用:比方多人合作开发中,你开发的性能须要两周实现,第一周还没写完,如果提交,因为代码不残缺,提交可能会导致他人不能干活,然而如果等代码全副写完再提交,又有失落的危险。
借助分支,你能够创立一个属于本人的分支,多集体各自在本人的分支上失常工作,互不影响,等到开发实现后,在一次性合并到原来的分支上,保障了平安、高效、协同、互补影响。
Git分支的创立、切换、删除十分快,和文件多少无关。
创立与合并分支
版本回退中,Git的版本治理是将每次提交串成一条工夫呈现,这条工夫线就是一个分支。
目前创立的Git仓库只有一个分支——主分支,即master
分支,
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是以后分支。
开始,master
分支是一条线,Git用master
指向最新的提交,再用HEAD
指向master
,就能确定以后分支和以后分支的提交点。
每次提交,master
分支都会向前挪动一步,随着一直的提交,master分支的线也越来越长。
当咱们创立新的分支,比方dev
分支,Git新建一个指针叫dev
,指向master
雷同的提交,再把HEAD
指向dev
,就示意以后分支在dev
上。
Git创立分支很快,因为Git只减少一个dev
指针,同时批改HEAD
的指向,工作区的文件都没有任何变动。
当初对工作区的批改和提交就针对dev
分支,比方新提交之后,dev
指针往前挪动,而master
指针不变
当咱们在dev
上的工作实现了,就能够把dev
合并到master
上。
Git的合并很简略,就是间接把master
指向dev
的以后提交,这就实现了合并。
Git合并分支也很快,仅仅是改改指针,工作区内容不变。
合并完分之后,如果删除dev分支只有把dev指针删除就能够
只剩下一条master分支
创立分支。
- 创立
dev
分支,并切换到dev
分支
$ git checkout -b dev切换到一个新分支 'dev'
git checkout -b xx
示意创立分支并切换。
- 分步骤创立并切换分支
dev2
。如下
$ git branch dev2$ git checkout dev2切换到分支 'dev2'
git branch
查看以后分支
$ git branch dev* dev2 master
git branch
列出所有分支,以后分支后面有一个*号。
- 当初能够在dev2分支上失常提交。如批改
readme.txt
文件。而后查看Git状态
$ git status位于分支 dev2尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")
提醒以后分支位于dev2
上,并且工作区readme.txt
批改
- 分支提交
$ git add readme.txt$ git commit -m"modify readme.txt at branch"[dev2 03d07d2] modify readme.txt at branch 1 file changed, 1 insertion(+)
如上,在以后分支dev2
上实现了提交。
- 在
dev2
分支上提交完,切回master
分支:
$ git checkout master切换到分支 'master'您的分支与上游分支 'origin/master' 统一。liu@liu-virtual-machine:~/gitTest$ cat readme.txt`this is a test that I learn and use git version control systemthis is a beginningwofaidognyixie dognxi
查看能够看到,readme.txt
文件放弃和批改前的统一。
- 切换到
dev2
分支,能够看到dev2
分支上内容为之前最新批改内容
$ git checkout dev2切换到分支 'dev2'$ cat readme.txt`this is a test that I learn and use git version control systemthis is a beginningwofaidognyixie dognxicreate two new branch
合并分支
- 将
dev2
分支内容合并到master
分支(以后分支为master
)
$ git merge dev2更新 036ced2..03d07d2Fast-forward readme.txt | 1 + 1 file changed, 1 insertion(+)
此时查看readme.txt
内容,曾经和dev2
一样
git merge
命令用于合并指定分支到以后分支。
留神,下面合并时提醒Fast-forward
,Git批示本次合并是“快进模式”,即把master
指向dev2
的以后提交,所以速度很快。
删除分支
- 删除
dev2
分支,合并实现后就能够释怀的删除dev2
分支了。
$ git branch -d dev2已删除分支 dev2(曾为 03d07d2)。$ git branch dev* master
删除后,查看branch
,dev2
分支曾经没有了。
Git创立、合并和删除分支都十分快,所以Git激励应用分支实现某个工作,合并后再删除分支,效率高并且平安。