我的文件在开头看起来像这样
asd
bnm
cvb
然后我添加了三个提交:
1
asd feature1 c1
bnm
cvb
2
asd feature1 c1
bnm feature1 c2
cvb
3
asd feature1 c1
bnm feature1 c2
cvb feature1 c3
现在,当我想通过执行
来恢复第二次提交时git revert HEAD^
我收到类似这样的错误消息
error: could not revert 2222222... feature 1 commit 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
我的文件看起来像这样
<<<<<<< HEAD
bnm feature1 c2
cvb feature1 c3
=======
bnm
cvb
\>>>>>>> parent of 2222222... feature 1 commit 2
我只是不明白为什么。我的假设是它会像Edwar Thomson在回答这个问题时解释的那样: git revert: Why do I get conflicts? 我没有两次编辑第2行,不应该发生冲突。我错过了什么?
我希望结果是
asd feature1 c1
bnm
cvb feature1 c3
没有任何冲突。
答案 0 :(得分:1)
这里缺少的是,像樱桃一样的回复只是应用补丁(这里是过去提交的负面图像)。
它没有合并。
这意味着,正如我在“Git cherry-pick causes merge conflict while merging does not”中描述的那样,它没有共同祖先的概念。
问题是由git revert计算的补丁的上下文:请参阅“Conflicts from apply and stash”。
还原(2和1之间的负差异)尝试取消第2行(在第三行bnm feature1 c2
之前将bnm
还原为cvb
,一个HEAD内容,不 cvb作为第三行
在应用该补丁时,Git不知道如何处理第三行:应该不管它,还是将其修改为cvb
。
请参阅“Why does this cherry-pick have a conflict?”中的另一个示例。