我知道git樱桃袋和git应用终端。但是今天我遇到了一些问题。我正在使用两个修订的差异应用一个补丁。我使用以下命令:
git diff head>diff.patch
git应用diff.patch
我对一个文件应用了补丁程序。
然后,我只是尝试 Cherry-Pick commit-id2。它成功地挑选了樱桃。
可能是什么原因?任何人都想在相同的情况下投掷一些灯。
两个可能性:
-
diff.patch
中的更改可能与commit-id2
的更改不同,这就是为什么两者行为不同的原因。git diff HEAD
显示了HEAD
和当前工作目录之间的差异。git cherry-pick commit-id2
应用commit-id2
与其父级之间的差异(并使用commit-id2
中的元数据提交结果)。commit-id2
及其父之间的差异(通常)与HEAD
和当前工作目录之间的差异相同。 -
您没有告诉
git apply
像cherry-pick
一样回到3向合并。尝试将--3way
(或-3
)选项添加到git apply
。
尝试以下内容:
git diff commit-id2^! >diff.patch
git apply -3 diff.patch
上面的表现应像git cherry-pick -n commit-id2
一样。(有关^!
语法的说明,请参见git help revisions
。)