我有一个叫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

其他回答

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

当你混合UNIX和Windows git客户端时会发生这种情况,因为Windows并没有“x”位的概念,所以你在Windows下签出的rw-r——r——(0644)文件会被msys POSIX层“提升”为rwx-r-xr-x(0755)。Git认为模式差异与文件中的文本差异基本相同,因此您的补丁不会直接应用。我认为你唯一的选择就是设定核心。文件模式为false(使用git-config)。

以下是msysgit的一些相关信息:http://code.google.com/p/msysgit/issues/detail?id=164(重新路由到archive.org 2013年12月3日的副本)

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

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

这解决了我的问题。

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

git apply——3way patchFile.patch

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

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

Git apply——reverse——reject example.patch

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

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