【发布时间】:2012-03-11 07:19:38
【问题描述】:
由于某种原因,当苍蝇发生合并冲突时,看起来 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
由于最后一次提交很重要,因此我们决定将其拉回到该分支上的分支 bar 和 git cherry-pick <commit>。
不幸的是,这会在文件foo 中产生有趣的合并冲突:
header
<<<<<<< HEAD
=======
add something here
add something else here
important change!
>>>>>>> 356ca3c... important change
footer
请注意,git mergetool 似乎做了正确的事情并产生了这个:
header
+important change!
+
footer
为什么合并冲突的文件包含我们尝试挑选的提交之前的提交?
【问题讨论】:
标签: git cherry-pick merge-conflict-resolution