所以我试图将一个diff文件应用到我的git dev分支。我想申请的差异是这里的:https://github.com/mbabker/joomla-cms/compare/JHtml_move.patch
我使用了git apply PATH_TO_PATCH.patch
现在尝试应用它时,我会收到大量错误累积
fatal: git apply: bad git-diff - expected /dev/null on line 47
第47行是--- /dev/null
我在另一个论坛上看到有人说在/dev/null
部分之后有一个尾随的空格,但没有。
如果它有任何帮助,我也会在第9,10,11,12和13行上抛出白色空格的错误 - 尽管它们不是任何尾随的空格。
在任何情况下,差异都是由git生成的 - 我只是将其复制并粘贴到记事本中。
我也尝试使用curl https://github.com/mbabker/joomla-cms/compare/JHtml_move.patch | git am
,但只是在没有指定位置的情况下发出错误。
关于为什么当该线实际存在时发出致命错误的任何想法????
更新@IvanZuzak
我尝试添加git am --ignore-space-change --ignore-whitespace PATH_TO_PATCH.patch
然而我首先获得(因为这是下载的补丁)一个错误,说电子邮件无效(它已被转换为HTML代码)所以我试图修复它但它一直在扔它不时地起来。然后它说previous rebase directory PATH_TO_GITHUB_BRANCH/.git/rebase-apply still exists but mbox given.
。所以我发现this建议删除branches .git文件夹中的rebase-apply文件夹。所以我做了那个然后我再次收到无效的电子邮件错误(尽管我已经改变了两个远离html格式的)
答案 0 :(得分:41)
我也有同样的问题:
fatal: git apply: bad git-diff - expected /dev/null on line 47
然而第47行读--- /dev/null
。我发现的问题是行结尾是Windows格式而不是UNIX格式。在Notepad ++中将行结尾转换为UNIX格式为我解决了这个问题。
答案 1 :(得分:4)
我有同样的问题。我开辟了Git Bash(Cygwin也是如此)并做了:
dos2unix.exe <patch-file>
然后我能够很好地应用补丁。
答案 2 :(得分:1)
我遇到了同样的问题,但我正在测试一个我要发送到listserve的补丁,遵循这里的建议:https://www.kernel.org/doc/Documentation/email-clients.txt。我无法在我的本地文件上修复问题,我需要分发一个可能会被gmail破坏的补丁,我正在使用git apply
检查gmailed版本。
我的同事向我指出
git am
在纠正这些类型的问题时优于git apply
,并且应该与.patch
文件一起使用。在上面的一条评论中提到了这一点,但它应该是一个答案。
答案 3 :(得分:1)
在Git 2.17(2018年第二季度)之后,您必须检查是否仍然看到错误消息bad git-diff - expected /dev/null on line 47
。
&#34; git apply
&#34;知道&#34; /dev/null
&#34;发出信号&#34;差异的这一边没有这样的文件。在解析补丁时可以跟着空格和垃圾,除了一个补丁,它会使一个其他有效的补丁(例如来自颠覆的补丁)被拒绝。
commit e454ad4见Tatyana Krasnukha (tkrasnukha
)(2018年2月15日)
commit f16ef7b见Johannes Schindelin (dscho
)(2018年2月15日)
(由Junio C Hamano -- gitster
--合并于commit 177bd65,2018年2月28日)
另见git-for-windows/git issue 1489
apply
:优雅地处理带有/dev/null
的Subversion差异Subversion生成的diff可以包含如下所示的行:
--- / dev / null(不存在)
让我们教Git应用机器优雅地处理这样一条线。
答案 4 :(得分:0)
我遇到了同样的问题 你有一个正在进行的改造,写
git rebase --skip
多次,直到看到No rebase in progress?
然后使用git am
答案 5 :(得分:0)
我遇到了同样的问题。
fatal: git apply: bad git-diff - expected /dev/null on line 96
或者,如果我将所有行结尾转换为Unix格式:
error: patch failed: <file>:81
error: <file>: patch does not apply
...
git apply --ignore-whitespace <patch>.patch
使用Unix line-endings。
答案 6 :(得分:0)
我可能在这一行中有一些额外的文字
--- /dev/null (nonexistent)
从“null”中删除所有符号,直到行尾为我提供帮助(在应用其他答案的建议后)。