我有一个叫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文件。然而,我试图应用补丁在一个较低的水平。它只是在项目的那个级别应用变更。

其他回答

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

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

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

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

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

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

git -am resolved

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

Patch -p1 < example.patch

这对我很有帮助。

如果补丁只应用了部分,而不是整个补丁。在应用补丁时,请确保您在正确的目录中。

例如,我在父项目文件夹中创建了一个补丁文件,其中包含.git文件。然而,我试图应用补丁在一个较低的水平。它只是在项目的那个级别应用变更。

警告:此命令可以永久删除旧的丢失提交。在尝试此操作之前,请复制整个存储库。

我找到了这个链接

我不知道为什么这样做,但我尝试了很多工作,这是唯一一个对我有用的。简而言之,运行以下三个命令:

git fsck --full
git reflog expire --expire=now --all
git gc --prune=now