git: 补丁不适用

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

这是什么意思?

如何解决这个问题?

解决办法

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

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

这解决了我的问题。

评论(9)

git apply --reject --whitespace=fix mychanges.patch 对我有用。

评论(8)

当你混合使用 UNIX 和 Windows 的 git 客户端时就会出现这种情况,因为 Windows 并没有"x"位的概念,所以你在 Windows 下检出的 rw-r--r-- (0644) 文件会被 msys POSIX 层提升为 rwx-r-xr-x (0755)。 我认为你唯一的选择是将 core.filemode 设置为 false(使用 git-config)。

这里有一个 msysgit 问题和一些相关信息: http://code.google.com/p/msysgit/issues/detail?id=164 (转到 archive.org'2013 年 12 月 3 日的副本)

评论(3)