没有冲突的合并是否等同于没有冲突的变基?
Is merge without conflicts equivalent to rebase without conflicts?
当且仅当对应的 git rebase
成功且无冲突时,git merge
将成功且无冲突是否正确?
不,事实上有一个简单的案例,合并工作正常但 rebase 不工作:
...--o--A <-- mainline
\
B--C--!C <-- branch
其中 C
是与 A
冲突的提交,而 !C
是其还原。将 branch
合并回 mainline
在源代码树效果上等同于将提交 B
合并回主线,而变基复制两个 C
(与 A
冲突) 然后 !C
(在解析时,也与 A
冲突)。
当然,在这种情况下,您可以交互地变基并简单地删除 C
和 !C
,但在更复杂的链中,您可以看到提交可能如何与 [=12= 冲突] 但随后的提交可能会有效地解决该冲突 "in advance",因此将分支的尖端合并回主线不会发生冲突。
当且仅当对应的 git rebase
成功且无冲突时,git merge
将成功且无冲突是否正确?
不,事实上有一个简单的案例,合并工作正常但 rebase 不工作:
...--o--A <-- mainline
\
B--C--!C <-- branch
其中 C
是与 A
冲突的提交,而 !C
是其还原。将 branch
合并回 mainline
在源代码树效果上等同于将提交 B
合并回主线,而变基复制两个 C
(与 A
冲突) 然后 !C
(在解析时,也与 A
冲突)。
当然,在这种情况下,您可以交互地变基并简单地删除 C
和 !C
,但在更复杂的链中,您可以看到提交可能如何与 [=12= 冲突] 但随后的提交可能会有效地解决该冲突 "in advance",因此将分支的尖端合并回主线不会发生冲突。