合并(merge rebase)
1、merge
git checkout feature
git merge main
说明:
merge
合并再feature
分支中创建了一个合并提交(绿色带星提交)。合并操作没有破坏性。存在的分支历史不会发生改变。
2、rebase
git checkout feature
git rebase main
说明:
- 如同所示,把
feature
分支的起始历史放到main分支的最后一次提交之上,达成了使用main
分支中新代码的目的,rebase
操作会通过为原始 - 分支的每次提交创建全新提交,从而重写原始分支的提交历史(绿色带星的提交)。
- 使用
rebase
操作的最大好处在于你可以让项目提交历史变得非常干净整洁。首先,它消除了git merge
操作所需创建的没有必要的合并提交。其次,正如上图所示,rebase
会造就一个线性的项目提交历史——也就是说你可以从feature
分支的顶部开始向下查找到分支的起始点,而不会碰到任何历史分叉。
3、rebase操作黄金法则
永远不要在公共分支上使用它
如果在公共分支main
上使用了rebase
,那么main分支上的一些提交(白色方框的提交)将会丢失,那么团队里面基于main
分支上的其它分支可能会出现没有父提交了(其他小伙伴会傻眼的!!!哈哈)。
4、使用场景总结
- 在非公共分支上的合并都用
rebase
,其他情况用merge
。(全网最简洁的总结)