所以我试图使用一个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格式的)
我也有同样的问题:
fatal: git apply: bad git-diff - expected /dev/null on line 47
然而第47行读取--- /dev/null
。我发现的问题是行结尾是Windows格式而不是UNIX格式。在Notepad ++中将行结尾转换为UNIX格式为我解决了问题。
我遇到过同样的问题。我开辟了Git Bash(Cygwin的工作原理)并做了:
dos2unix.exe <patch-file>
然后我能够完美地应用补丁。
我有同样的问题,但我正在测试一个我要发送到listserve的补丁,遵循这里的建议:https://www.kernel.org/doc/Documentation/email-clients.txt。我不能只在我的本地文件上修复问题,我需要分发一个可能会被gmail破坏的补丁,我正在用git apply
查看gmailed版本。
我的同事向我指出了这一点
git am
比git apply
更好地纠正这些问题,并且应该与.patch
文件一起使用。在上面的一条评论中提到了这一点,但它应该是一个答案。
您必须检查在Git 2.17(2018年第二季度)之后是否仍然看到错误消息bad git-diff - expected /dev/null on line 47
。
“git apply
”中的许多地方都知道“/dev/null
”表示“在diff的这一侧没有这样的文件”,在解析补丁时可以跟随空格和垃圾,除了一个,这是一个有效的补丁(例如被颠覆的人拒绝了。
见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的应用机器优雅地处理这样一条线。
我有同样的问题你有一个正在进行的改变,写
git rebase --skip
很多次,直到看到No rebase in progress?
然后再次尝试与git am
我遇到过同样的问题。
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。
你可能在这一行中有一些额外的文字,我有--- /dev/null (nonexistent)
删除“null”中的所有符号直到行结束帮助我(在应用其他答案的建议之后)。