git cherry-pick merge 冲突 pull 入其他提交?

标签 git cherry-pick merge-conflict-resolution

出于某种原因,当 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/

相关文章:

混帐 : The remote end hung up unexpectedly

eclipse - Cherry pick 到 Eclipse git 中的另一个分支

GIT 2 个或多个 merge 冲突在单个文件中 - p4merge 如何处理?

git - 从 development merge 到 master 时处理冲突

Git - 我们可以恢复已删除的提交吗?

git - 我如何在本地使用 git 命名空间?

git - git 提供程序错误中不支持的 URL 协议(protocol)

git - cherry-pick : Mainline branch is not specified but b0c4de0c8e164d09efe73a24aec3f9096c860e1f is a merge commit

git revert 之后的 git rebase

git - VimDiff E93 : More than one match for RE