为什么git rebase需要三方合并?
我试图弄明白为什么rebase需要三方合并。例如,如果我们有为什么git rebase需要三方合并?,git,merge,rebase,Git,Merge,Rebase,我试图弄明白为什么rebase需要三方合并。例如,如果我们有 A1 - A2 \ B1 我检查了B1,我想表演: git rebase A2 为什么git合并A2、B1和A1?为什么A2和B1不够?我的意思是,作为提交的A2和B1不包含树的完整当前快照吗?要执行合并,Git需要找出自共同祖先(A1)以来两个分支中到底发生了什么。正如您所说的,Git存储提交/树的快照以便获得实际的更改集,它必须将A2与A1和B1与A1进行比较,然后合并这些单独的更改集 同样的事情也会发生在重基中。
A1 - A2
\
B1
我检查了B1,我想表演:
git rebase A2
为什么git合并A2、B1和A1?为什么A2和B1不够?我的意思是,作为提交的A2和B1不包含树的完整当前快照吗?要执行合并,Git需要找出自共同祖先(
A1
)以来两个分支中到底发生了什么。正如您所说的,Git存储提交/树的快照以便获得实际的更改集,它必须将A2
与A1
和B1
与A1
进行比较,然后合并这些单独的更改集
同样的事情也会发生在重基中。要在B1
上应用A2
的变更集,我们首先需要根据A1
和A2
之间的差异计算变更集。然后我们可以将其应用于B1
。您可以将重基视为类似于自动生成修补程序文件的东西。首先,它从旧分支生成所有这些补丁文件,然后将它们应用到当前头部
因此,我们需要所有这三个提交来实际计算差异,因为我们无法仅通过查看该提交来了解提交中发生了什么。谢谢,这就是我试图在我的问题中展示的内容。