目录
Git分支管理
Git 的默认分支就是 master。你所作的commit会在master分支上自动移动。 在多次提交操作之后,master分支指向最后那个commit object(提交对象链)。
分支创建
通过git branch来查看和创建分支。
创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)
-
查看当前分支
gitgit branch
-
分支创建
gitgit branch dev
-
分支切换
gitgit checkout dev
-
分支创建并切换同时完成
gitgit checkout -b dev2
-
分支最近切换
gitgit checkout -
多个分支共享版本跟踪
- 在dev2分支中创建一个文件z.txt,三个分支下都可以追踪到z.txt文件

- 在dev分支中,将z.txt文件添加,三个分支下都可以追踪到z.txt文件

- 在dev分支中,将z.txt文件提交,只有dev分支下有z.txt文件,其它两个分支下没有

分支合并
-
基于上面的例子,切换到master上做dev的合并,合并后,就会发现master分支下也出现了z.txt文件。
gitgit merge dev
-
文件进行修改
- 切换到dev分支上,将z.txt文件进行修改

- 切换回master分支,会提示z.txt文件进行了修改

- 切换到dev分支上,将z.txt文件进行修改
分支删除
- 不能删除自己所在的分支

- 可以切换到master删除一个合并后的或者没有发生变化的分支

- 如果一个分支发生了变化,不能删除。
如果要强制删除可以git branch -D dev2。
分支的本质
master指向的是提交
HEAD是指向当前的分支,当前在哪个分支就指向哪个分支

第二张图上我们可以看到创建了dev的分支,当我们切换到dev分支的时候HEAD就会指向dev

当我们进入.git文件夹查看HEAD的内容的时候可以看到,所处分支不同内部的文件指向就不同。
- master分支
cat .git/HEAD

- dev分支

如果dev发生修改提交,dev的版本就会向后移动。

在master分支上如果合并就会出现下面的图

分支的冲突

- 在dev中修改z.txt文件,并提交

- 切换回master中,修改z.txt文件,并提交

- 合并时,会发现冲突

git
<<<<<<<<<<<HEAD是当前指向的分支所修改
>>>>>>>>>>dev是dev分支修改
-
我们需要手工合并。

-
可以通过图形来查看冲突的提交日志。
gitgit log --graph
分支管理策略
git 的分支整体预览图如下:

从上图可以看到主要包含下面几个分支:
master:git默认主分支(这里不作操作)。
stable:稳定分支,替代master,主要用来版本发布。
develop:日常开发分支,该分支正常保存了开发的最新代码。
feature:具体的功能开发分支,只与 develop 分支交互。
release:release 分支可以认为是 stable分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release分支,测试没有问题并且到了发布日期就合并到 stable分支,进行发布。
bugfix:线上 bug 修复分支。