2017-02-22 172 views
6

我试图应用包含二进制文件与git apply但只有文件被添加的修补程序。我试着运行git apply failing.patch -v,它打印的东西类似于:Git应用跳过修补程序

跳过的补丁'file.txt'。
检查修补程序file.bin ...
干净地应用修补程序file.bin。

我怎样才能知道跳过的原因是什么?由于目前的消息不是很有启发性。

+0

修补程序通常在其包含的更改已应用于过去时跳过。这有很多可能的原因:合并,樱桃选择,手动或使用其他补丁等操作变化。 – axiac

+0

我也想过,但事实并非如此。 –

回答

7

我发现通过运行patch -p1 < failing.patch其印刷

无法找到文件在这提醒了我,我是不是在根目录下输入线5

修补问题。

我不明白为什么no one had asked this before以及为什么详细消息不是详细的。

此外,连official documentation都没有提到跳过和可能的原因。

1

在尝试跨项目移植更改时遇到此问题。 git apply似乎忽略修补程序文件路径上的任何目录名称,如果索引行与目标存储库中的文件哈希不匹配,它也拒绝应用。我不得不使用这些选项(其中--no-index似乎是无证)更好的成功:

git apply --verbose --no-index --directory {subdir} {patch-file} 
0

得到了同样的问题。在我的情况下,补丁目标的某些父目录中的错误来源是.git文件夹。解决方案是将修补程序目标移到该父目录之外。