备注:
本文转载参考于廖雪峰老师的博客 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 system
this is a beginning
wofaidognyixie dognxi
查看能够看到,readme.txt
文件放弃和批改前的统一。
- 切换到
dev2
分支,能够看到dev2
分支上内容为之前最新批改内容
$ git checkout dev2
切换到分支 'dev2'
$ cat readme.txt
`this is a test that I learn and use git version control system
this is a beginning
wofaidognyixie dognxi
create two new branch
合并分支
- 将
dev2
分支内容合并到master
分支(以后分支为master
)
$ git merge dev2
更新 036ced2..03d07d2
Fast-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 激励应用分支实现某个工作,合并后再删除分支,效率高并且平安。