74

当我尝试从文件应用补丁时,我看到

错误:如果没有完整的索引行,则无法将二进制补丁应用于“my/resource.png”
错误:my/resource.png:补丁不适用

我添加my/resource.png了我制作补丁的提交。如何启用全索引支持?

4

2 回答 2

88

签出要从中创建补丁的分支。运行此命令:

git diff-index 79fd4d7 --binary > ~/Desktop/my-patch

79fd4d7在您想要区分的提交范围之前的提交的占位符在哪里。(例如,我想要一个包含以下前三个提交的补丁:

aaa02b0 third commit mine
aabbbcc second commit mine
bb82aed first commit mine
79fd4d7 old commit

然后检查你的新分支并运行git apply ~/Desktop/my-patch

于 2013-06-17T16:20:30.643 回答
4

如果您只删除了一些文件并收到相同的消息,我想以另一种方式发布。因为我不再有权访问源代码(通过重置到另一个提交),我需要另一个解决方案(而不是创建一个新的补丁文件)。

因此我从我的补丁文件中删除了以下部分:

diff --git a/MyProject/Libraries/some.dll b/MyProject/Libraries/some.dll
deleted file mode 100644
index a0908d7..0000000
Binary files a/MyProject/Libraries/some.dll and /dev/null differ
diff --git a/MyProject/Libraries/some.dll.mdb b/MyProject/Libraries/some.dll.mdb
deleted file mode 100644
index d3c3912..0000000
Binary files a/MyProject/Libraries/some.dll.mdb and /dev/null differ

之后我可以成功应用我的补丁文件!不知道他为什么要对已删除的文件进行二进制比较...

于 2019-12-04T14:02:58.893 回答