21

所以我试图使用将差异文件应用到我的 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,但这只会给出错误而没有指定位置。

来自 curl 尝试的错误消息

关于为什么当线路实际存在时它会给出致命错误的任何想法????


更新到@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.。所以我发现这个建议删除分支 .git 文件夹中的 rebase-apply 文件夹。所以我这样做了,然后我又收到了无效的电子邮件错误(尽管我已经将这两个都改成了 html 格式)

4

6 回答 6

44

我也有同样的问题:

fatal: git apply: bad git-diff - expected /dev/null on line 47

然而第 47 行显示为--- /dev/null. 我发现的问题是行尾是 Windows 格式而不是 UNIX 格式。在 Notepad++ 中将行尾转换为 UNIX 格式解决了我的问题。

于 2013-09-12T19:38:37.087 回答
4

我遇到过同样的问题。我打开了 Git Bash(Cygwin 也可以)并做了:

dos2unix.exe <patch-file>

然后我就可以完美地应用补丁了。

于 2014-11-04T19:43:28.910 回答
2

bad git-diff - expected /dev/null on line 47您必须检查在 Git 2.17(2018 年第二季度)之后是否仍然看到错误消息。

“”中的许多地方git apply都知道“ /dev/null”表示“在 diff 的这一侧没有这样的文件”在解析补丁时可以后跟空格和垃圾,除了一个,它制作了一个有效的补丁(例如来自颠覆)被拒绝。

请参阅Tatyana Krasnukha ( ) 的提交 e454ad4(2018 年 2 月 15 日。 请参阅Johannes Schindelin ( ) 的提交 f16ef7b(2018 年 2 月 15 日(由Junio C Hamano 合并 -- --提交 177bd65中,2018 年 2 月 28 日)tkrasnukha
dscho
gitster

另请参阅git-for-windows/git 问题 1489

apply/dev/null:优雅地处理颠覆差异

Subversion 生成的差异可以包含这样的行:

--- /dev/null(不存在)

让我们教 Git 的应用机制来优雅地处理这样的行。

于 2018-03-04T19:10:57.277 回答
1

我有同样的问题,但我正在测试一个我要发送到列表服务器的补丁,遵循这里的建议:https ://www.kernel.org/doc/Documentation/email-clients.txt 。我不能只在本地文件上解决问题,我需要分发一个可能会被 gmail 破坏的补丁,并且我正在使用git apply.

我的同事向我指出

git am 

git apply纠正这些类型的问题更好,并且应该与.patch文件一起使用。上面的评论之一提到了这一点,但它应该是一个答案。

于 2014-12-06T00:33:05.150 回答
0

我有同样的问题你有一个正在进行的变基,写

git rebase --skip 

很多次,直到看到No rebase in progress? 然后再试一次git am

于 2013-05-07T18:29:47.377 回答
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 行尾。

于 2015-05-20T11:34:07.930 回答