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 那个单一的提交。
希望对您有所帮助!
在工作中,我必须包含从远程分支到本地分支的提交。
因为我还不想合并,所以我挑选了远程提交到我的本地分支。
在挑选时,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 那个单一的提交。
希望对您有所帮助!