出于某种原因,当 flies 发生 merge 冲突时,git cherry-pick 似乎会 pull 入其他提交。当我们使用 git mergetool
时这些消失了但阻止我们手动编辑 merge 冲突的文件。
有人知道为什么会这样吗?
为了说明我的意思,让我们使用一个全新的 git 1.7.4 存储库和一个文件 foo
:
header
footer
让我们在此时创建一个名为 bar
的新分支.回到母版,让我们在单独的提交中向该文件添加三个更改。
提交 1:
header
+add something
+
footer
提交 2:
header
add something
+add something else
+
footer
提交 3:
header
add something
add something else
+important change!
+
footer
由于最后一次提交很重要,在我们决定将其 pull 回到分支 bar
之后和 git cherry-pick <commit>
在那个分支上。
不幸的是,这会在文件 foo
中产生一个有趣的 merge 冲突:
header
<<<<<<< HEAD
=======
add something here
add something else here
important change!
>>>>>>> 356ca3c... important change
footer
请注意 git mergetool
似乎做了正确的事情并产生了这个:
header
+important change!
+
footer
为什么 merge 冲突的文件包含我们尝试挑选的提交之前的提交?
最佳答案
Git 是持怀疑态度的,如果它没有找到补丁适用的正确边缘,它就不会进行 merge 。该补丁将应用于不存在的行号。检查该提交的补丁,发现它应用在没有意义的行号处。由于它是一个樱桃选择,它没有考虑文件是如何变成那样的以及添加该条目就可以了。希望这是有道理的。
关于git cherry-pick merge 冲突 pull 入其他提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369798/