樱桃挑选和补丁之间有什么区别



我知道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 applycherry-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。)

最新更新