我试图弄清楚为什么rebase需要三方合并.例如,如果我们有
A1 - A2
\
B1
Run Code Online (Sandbox Code Playgroud)
我已经检查了B1,我想要执行:
git rebase A2
Run Code Online (Sandbox Code Playgroud)
为什么git合并A2,B1和A1?为什么A2和B1不够用?我的意思是,A2和B1不能作为提交包含树的完整当前快照吗?
为了执行合并,Git需要找出自共同祖先(A1)以来在两个分支中究竟发生了什么.正如你正确说,Git的存储提交/棵的快照,因此要获得一个实际的变更集,它有比较A2来A1和B1到A1,然后合并这些个体的变更集.
在rebase中也会发生同样的事情.若要用于更改设置的A2上B1,我们首先需要计算从变化之间的差异设定A1和A2.然后我们可以应用它B1.您可以将rebase视为类似于自动生成修补程序文件的内容.首先,它从旧分支生成所有这些补丁文件,然后将它们应用到当前的HEAD.
因此,我们需要所有这三个提交来实际计算差异,因为我们无法通过查看提交来弄清楚提交中发生了什么.
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |