我知道 git cherry-pick 和 git apply terminalogies。但是今天我遇到了一些问题。我通过使用两个修订版的差异来应用一个补丁。我使用了以下命令:
git diff 头> diff.patch
git 应用 diff.patch
一个文件的补丁应用失败。
然后我只是尝试挑选commit-id2。樱桃采摘成功。
可能是什么原因?任何人都想对此有所了解。
我知道 git cherry-pick 和 git apply terminalogies。但是今天我遇到了一些问题。我通过使用两个修订版的差异来应用一个补丁。我使用了以下命令:
git diff 头> diff.patch
git 应用 diff.patch
一个文件的补丁应用失败。
然后我只是尝试挑选commit-id2。樱桃采摘成功。
可能是什么原因?任何人都想对此有所了解。
两种可能:
中的变化diff.patch
可能与 中的变化不同commit-id2
,这就是两者行为不同的原因。
git diff HEAD
HEAD
显示与当前工作目录 之间的差异。应用与其父git cherry-pick commit-id2
级之间的差异(并使用来自 的元数据提交结果)。与其父级之间的差异(通常)与当前工作目录之间的差异不同。commit-id2
commit-id2
commit-id2
HEAD
您没有告诉git apply
像这样做那样退回到 3 路合并cherry-pick
。尝试将--3way
(或-3
)选项添加到git apply
.
尝试以下操作:
git diff commit-id2^! >diff.patch
git apply -3 diff.patch
上面的行为应该像git cherry-pick -n commit-id2
. (参见语法git help revisions
解释。)^!