Merge & Rebase
Merge
合并两个分支
- 在
main
分支上执行git merge feat
命令,将feat
合入main
- Git 会将
A
,B
,C
做一个三方合并,然后提交合并的结果
🐳
提交历史是非线性的,并且会引入一次新的提交。
Rebase
合并多个提交
- 使用
git rebase -i HEAD~3
命令,合并最近三个提交
🐳
常用来清理提交历史。
线性三方合并
- 首先在
feat
分支上执行git rebase main
命令,将feat
分支变基到main
分支
- 然后在
main
分支上执行git merge feat
命令,Git 会将A
,B
,C
做一个快速合并
🐳
提交历史是线性的,但需要解决多次冲突。
Appendix
两方合并
我们想要将 feat
合入 main
,但是仅仅对比 B
, C
,我们无法知道是谁修改了文件,所以只能手动合并
三方合并
三方合并引入了 B
, C
的共同父节点 A
,可以找出修改的文件,因此可以自动合并
快速合并
做三方合并时,如果 main
上没有新的提交,就不会产生冲突,Git 会直接将 main
指针前移到 C
🐳
快速合并不会产生新的提交,并且记录是线性的。