git 分支的作用
- 几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
分支的应用场景
- 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理:
- 返回到原先已经发布到生产服务器上的分支。
- 为这次紧急修补建立一个新分支,并在其中修复问题。
- 通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上。
- 切换到之前实现新需求的分支,继续工作。
- 如图创建iss53分支来实现紧急修补
- 分支创建方法:
$ git branch iss53 //创建分支iss53
$ git checkout iss53 //切换的iss53分支
- 当iss53分支对项目修改并提交后
- 如果iss53将项目修改完成那么可以切换回master分支并且合并iss53分支
$ git checkout master
$ git merge iss53
此时master和iss53都会指向c3 这时iss53完成了他的使命可以将其删除
$ git branch -d iss53
Deleted branch iss53 (was 3a0874c).
分支冲突
- 当往往实际情况并非这么简单 例如会出现多个分支如图
- 这时合并master和iss53时就会复杂一点:如果在不同的分支中没有修改了同一个文件的同一部分那么合并时git会帮助我们完成,Git 为分支合并自动识别出最佳的同源合并点。并且创建一个新的文件快照
- 完成合并后便可删除掉iss53分支
- 但当出现如果在不同的分支中修改了同一个文件的同一部分那么git会在冲突处加入标记来手工定位并解决这些冲突如图:
<<<<<<< HEAD
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53
- 其中======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。
- 当解决完冲突时便可以合并分支