3

出于某种原因,当苍蝇发生合并冲突时,看起来 git cherry-pick 会拉入其他提交。这些在我们使用时会消失,git mergetool但会阻止我们手动编辑合并冲突的文件。

有谁知道为什么会这样?

为了说明我的意思,让我们使用一个带有单个文件的全新 git 1.7.4 存储库foo

header

footer

让我们在这一点上创建一个名为bar. 回到 master,让我们在单独的提交中添加三个更改到这个文件。

提交 1:

header

+add something
+
footer

提交 2:

header

add something

+add something else
+
footer

提交 3:

header

add something

add something else

+important change!
+
footer

由于最后一次提交很重要,因此我们决定将其拉回分支bargit cherry-pick <commit>在该分支上。

不幸的是,这会在 file 中产生一个有趣的合并冲突foo

header

<<<<<<< HEAD
=======
add something here

add something else here

important change!

>>>>>>> 356ca3c... important change
footer

请注意,这git mergetool似乎做了正确的事情并产生了这个:

header

+important change!
+
footer

为什么合并冲突的文件包含我们试图挑选的那个之前的提交?

4

1 回答 1

0

Git 持怀疑态度,如果它没有找到适用于补丁的适当边缘,它将不会进行合并。该补丁将应用于不存在的行号。检查该提交的补丁,并查看它是否应用在没有意义的行号处。由于它是精选的,因此它没有考虑文件是如何变成这样的,并且可以添加该条目。希望这是有道理的。

于 2012-02-21T00:57:33.833 回答