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
🐳
快速合并不会产生新的提交,并且记录是线性的。