备注:

本文转载参考于廖雪峰老师的博客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

删除后,查看branchdev2分支曾经没有了。

Git创立、合并和删除分支都十分快,所以Git激励应用分支实现某个工作,合并后再删除分支,效率高并且平安。