git cherry pick合并冲突拉入其他提交?
出于某种原因,当flies发生合并冲突时,git cherry pick似乎会拉入其他提交。当我们使用git cherry pick合并冲突拉入其他提交?,git,cherry-pick,merge-conflict-resolution,Git,Cherry Pick,Merge Conflict Resolution,出于某种原因,当flies发生合并冲突时,git cherry pick似乎会拉入其他提交。当我们使用git mergetool时,这些问题就会消失,但会阻止我们手动编辑合并冲突的文件 有人知道为什么会这样吗 为了说明我的意思,让我们使用一个新的Git 1.7.4存储库,其中只有一个文件:代码> Foo: header footer header <<<<<<< HEAD ======= add something here add someth
git mergetool
时,这些问题就会消失,但会阻止我们手动编辑合并冲突的文件
有人知道为什么会这样吗
为了说明我的意思,让我们使用一个新的Git 1.7.4存储库,其中只有一个文件:代码> Foo:
header
footer
header
<<<<<<< HEAD
=======
add something here
add something else here
important change!
>>>>>>> 356ca3c... important change
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
由于最后一次提交很重要,因此在我们决定将其拉回到该分支上的分支bar
和git cherry pick
不幸的是,这在文件foo
中产生了一个有趣的合并冲突:
header
footer
header
<<<<<<< HEAD
=======
add something here
add something else here
important change!
>>>>>>> 356ca3c... important change
footer
为什么合并冲突文件包含的提交比我们试图挑选的文件早?Git对此持怀疑态度,如果它没有找到补丁将应用到的正确边缘,它将不会进行合并。修补程序将应用于不存在的行号。检查提交的修补程序,并查看其应用于没有意义的行号。由于它是一个樱桃选择,它没有考虑文件是如何变成这样的,并且添加该条目是可以的。希望这是有意义的。您对此有支持性的参考资料吗?我的问题似乎与此类似,您说过cherry pick“有效地为单个提交生成补丁”;这与我之前听到的关于cherry pick的说法是一致的。你上面的回答表明它比那更复杂,并不复杂。Git查看修补程序将应用到哪里,如果边缘不匹配,则视为冲突。如果合并,那么git会考虑文件是如何通过历史记录达到现在的状态的。