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

其他回答

来自msysgit@googlegroups.com邮件列表的Johannes Sixt建议使用以下命令行参数:

git apply --ignore-space-change --ignore-whitespace mychanges.patch

这解决了我的问题。

我的问题是,我运行git diff,然后运行git reset—hard HEAD,然后意识到我想撤销,所以我尝试从git diff复制输出到一个文件,并使用git apply,但我得到了一个错误,“补丁不适用”。在切换到patch并尝试使用它之后,我意识到由于某种原因,差异的一部分是重复的,在删除重复之后,patch(大概也包括git apply)工作了。

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

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

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

git -am resolved

What I looked for is not exactly pointed out in here in SO, I'm writing for the benefit of others who might search for similar. I faced an issue with one file (present in old repo) getting removed in the repo. And when I apply the patch, it fails as it couldn't find the file to be applied. (so my case is git patch fails for file got removed) '#git apply --reject' definitely gave a view but didn't quite get me to the fix. I couldn't use wiggle as it is not available for us in our build servers. In my case, I got through this problem by removing the entry of the 'file which got removed in the repo' from patch file I've tried applying, so I got all other changes applied without an issue (using 3 way merge, avoiding white space errors), And then manually merging content of file removed into where its moved.

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

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