分支:
分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其它分支的影响,所以在同一个数据库里可以同时进行修改。分叉的分支可以合并。
master分支:
在数据库进行最初的提交后。Git会创建一个名为master的分支。因此之后的提交在切换分支之前都会添加到master分支里。
Merge分支:
merge分支是为了可以随时发布release而创建的分支,它还能作为topic分支的源分支使用。如果要进行更改,通常会创建Topic分支,而针对该分支,可以使用Jenkins之类的CI工具进行自动化编译以及测试。通常,大家会将master分支当做merge分支使用。
Topic分支:
topic分支是为了开发新功能或修复Bug等任务而创建的分支。若要同时进行多个的任务,请创建多个的topic分支。topic分支是从稳定的merge分支创建的,完成作业后,要把topic分支合并回merge分支。
分支的切换:
若要切换作业的分支,就要进行checkout操作。进行checkout时,Git会从工作树还原向目标分支提交的修改内容。checkout之后的提交记录将会被追加到目标分支。
head:
head指向的是现在使用中的分支的最后一次更新。通常默认指向master分支的最后一次更新。通过移动head,就可以变更使用的分支。
stash:
stash是临时保存文件修改内容的区域。stash可以暂时保存工作树和索引里还没提交的修改内容,你可以事后在取出暂存的修改,应用到原先的分支或其他的分支上。
分支的合并:
完成作业后的topic分支,最后要合并回merge分支。合并分支有两种方法:使用merge或rebase。使用这两种方法,合并后的分支的历史记录会有很大的差别
(1)merge:保持修改内容的历史记录,但是历史记录会很复杂
(2)rebase:历史记录简单,是在原有提交的基础上将差异内容反映进去。因此,可能导致原本的提交内容无法正常运行
注意:
- 在topic分支中更新merge分支的最新代码,请使用rebase
- 向merge分支导入topic分支的话,先使用rebase,在使用merge