我有一个叫my_pcc_branch。patch的补丁。

当我尝试应用它时,我得到以下信息:

$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply

这是什么意思?

我该如何解决这个问题?


当前回答

Git apply——reverse——reject example.patch

当你创建一个分支名称颠倒的补丁文件时:

ie。Git diff feature_branch..Master而不是git diff Master ..feature_branch

其他回答

尝试使用这里建议的解决方案:https://www.drupal.org/node/1129120

Patch -p1 < example.patch

这对我很有帮助。

在我的情况下,我很愚蠢,在第一时间就错误地创建了补丁文件,实际上是以错误的方式差分的。我最终得到了完全相同的错误消息。

如果你在master上,git diff branch-name > branch-name。补丁,这试图删除所有你想发生的添加,反之亦然(这是不可能的git完成,因为,显然,从未完成的添加不能删除)。

所以确保你签出到你的分支并执行git diff master > branch-name.patch

当所有这些都失败时,尝试git apply的——3way选项。

git apply——3way patchFile.patch

——3 如果补丁没有完全应用,则返回到3向合并 Patch记录了它应该应用到的blob的身份,而我们 这些斑点是否在本地可用,可能会离开冲突 工作树中供用户解析的文件中的标记。这 选项暗示了——index选项,并且与 ——reject和——cached选项。

典型的失败案例应用尽可能多的补丁,让你在git中解决冲突,但你通常这样做。可能比被拒绝的选择简单一步。

这个命令将应用补丁不解决它留下坏文件*.rej:

git apply --reject --whitespace=fix mypath.patch

你只需要解决它们。解决后运行:

git -am resolved

Git apply——reject——whitespace=fix mychanges。帕奇为我工作。

解释

——reject选项将指示git在无法确定如何应用补丁时不要失败,而是应用它可以应用的单个块,并为它不能应用的块创建拒绝文件(.rej)。Wiggle可以“应用[这些]被拒绝的补丁,并执行文字差异”。

此外,——whitespace=fix将警告空格错误并尝试修复它们,而不是拒绝应用其他适用的块。

这两个选项一起可以使补丁应用程序在失败时更加健壮,但是它们需要额外关注结果。

完整的文档请参见https://git-scm.com/docs/git-apply。