Git的分支
前言(本段来自搜狗百科)
直至现在为止,我们的项目版本库一直都是只有一个分支 master。在 git 版本库中创建分支的成本几乎为零,所以,不必吝啬多创建几个分支。下面列举一些常见的分支策略,仅供大家参考:
-
创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰,也方便与他人交流协作。
-
当进行高风险的工作时,创建一个试验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多。
-
合并别人的工作的时候,最好是创建一个临时的分支
1.分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
2.分支的操作(命令)
命令 | 作用 |
---|---|
git branch -v | 查看分支 |
命令 | 作用 |
---|---|
git branch 分支名 | 创建指定分支名的分支 |
命令 | 作用 |
---|---|
git checkout 分支名 | 切换到指定分支名的分支 |
在hot-fix分支下修改文件并提交
- 修改文件
- 提交到暂存区
- 提交到本地库
- 查看版本信息和日志
命令 | 作用 |
---|---|
git merge 分支名 | 将指定分支名的分支合并到当前的分支 |
正常合并:master分支未修改,只修改了hot-fix分支的文件内容,即相当于是基于master分支的文件内容上修改的,这属于正常合并
冲突合并:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。 必须人为决定新代码内容。
- 修改master分支文件的内容并提交
- 修改hot-fix分支文件的内容并提交
- 合并冲突
直接合并会报自动合并失败
这时需要人工进行手动合并
提交到暂存区
提交到本地库,注意本次提交到本地库不能带文件名
查看master分支的文件合并成功,但是hot-fix分支的文件并未合并,说明合并冲突只修改要合并的分支文件内容,而不会修改被合并分支的文件内容
总结:
- master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
- HEAD如果指向master,那么我们现在就在master分支上。HEAD如果执行hotfix,那么我们现在就在hotfix分支上。
- 所以切换分支的本质就是移动HEAD指针。