Git 自动合并在 cherry-picking 时删除了一些信息

Git auto-merging removed some information while cherry-picking

在工作中,我必须包含从远程分支到本地分支的提交。

因为我还不想合并,所以我挑选了远程提交到我的本地分支。

在挑选时,Git 执行了自动合并,但没有提示我发生冲突。

然后我意识到远程的一些重要代码行在生成的提交中丢失了。

我把案例放在这里:

https://github.com/apicoding/SimplePrj

1. 我在 master 中的 'Initial commit' 缺少必需的 'Print()' 方法实现。

2. 'Print()' 方法定义在 'Ready to merge' commit in remote.

3. cherry-picking/auto-merge 'Ready to merge' commit to master 后, 'Print()' 方法仍未定义。

你有解释为什么 git cherry-pick 可以选择删除一些信息而不引发冲突并要求用户选择吗?

当你选择 cherrypick 时,你会将你 cherrypick 的提交带到你的分支中,所以如果你从 remote cherrypick 了 Ready to merge 提交,那么只有评论 //ready to merge 去了到您的分支(这是提交的唯一更改)。

如果你想从 remote 中获取所有更改,你应该合并分支,而不是 cherrypicked 那个单一的提交。

希望对您有所帮助!