您可能需要展示更多流程。
我创建了一个小库和文件foo.txt
,在两次提交加入这两条线,跑git rebase -i
和交换它们:
pick f196c5b second change
pick 8d6ad6a first change
导致:
1
2
3
4
5
6
existing content
<<<<<<< HEAD
||||||| parent of f196c5b... second change
Line 1
=======
Line 1
Line 2
>>>>>>> f196c5b... second change
其我现在必须手动解决。我应该选择什么作为结果?我认为是这样的:
1
2
3
4
5
6
existing content
Line 2
所以我编辑的文件,有一个并退出编辑器,git add foo.txt
,并运行git rebase --continue
; 和我相互冲突,导致:
1
2
3
4
5
6
existing content
<<<<<<< HEAD
Line 2
||||||| parent of 8d6ad6a... first change
=======
Line 1
>>>>>>> 8d6ad6a... first change
我应该如何解决这个问题?我认为答案是保持Line 2
from HEAD
,同时还保留Line 1
从8d6ad6a... first change
。这是给我什么样的顺序把这些线路进入,但我想我会用:
1
2
3
4
5
6
existing content
Line 2
Line 1
,所以我写的文件,退出编辑器,git add foo.txt
和git rebase --continue
。
这样就完成了rebase,这个文件现在是我上次解决冲突时的形式。
的|||||||
通过=======
部出现,因为我有merge.conflictStyle
设置为diff3
。这向我展示了共同的祖先是什么。这在真正合并时最为有用 - 樱桃选择的“合并基础”有点怀疑 - 但我喜欢随时保持它。
由于它们与最终结果无关,所以我省略了编写新会话的编辑器会话,以供旧提交的新副本使用。 (请记住,git rebase
是复制提交一旦完成重设,ORIG_HEAD
记得原始,预重新复制,提交;当前分支名称现在发现新的后复制提交。)