merge
- 假设现在有2个分支,一个master主分支,一个是branchA你的个人分支
- C3是master 、C4 C5 是branchA
现在需要合并代码,假设你在自己的分支操作(一般尽量都在自己分支操作)
使用merge合并
$git checkout branchA // 切换到自己的分支
$ git merge master
- 这就将master分支上的C3合并到了你的branchA本地分支,合并之后会在你的分支后自动创建一个新的commit
- C6就是合并之后的。C3这个commit记录也会依然存在
使用rebase合并
- 即好像将你需要去rebase的分支拔下来然后重新插到另一个分支上,👆上面这个例子就像是要把C3拔下来,按顺序插到下面来
- rebase原理是先找到两个分支的最近的共同祖先C2,对比当前分支相对于C2的修改并存为临时文件,(就是将C3相对于C2的修改部分存为临时文件)再将当前分支指向目标基底C5,C3再依序应用
- 在对特征分支进行rebase之后,其等效于创建了新的提交。并且老的提交也没有被销毁,只是简单地不能再被访问或者使用。
- 此时的C3其实是看不到,也不能被访问或者使用了的,(这里是为了方便理解)
- 正常在一些管理工具上看到的是一条线
rebase 参考文献:
Git Rebase原理以及黄金准则详解
变基(rebase和merge的区别)