So I was trying to use apply a diff file to my git dev branch. The diff I wanted to apply was this one here: https://github.com/mbabker/joomla-cms/compare/JHtml_move.patch
You will have to check if you still see the error message bad git-diff - expected /dev/null on line 47
after Git 2.17 (Q2 2018).
Many places in "git apply
" knew that "/dev/null
" that signals "there is no such file on this side of the diff" can be followed by whitespace and garbage when parsing a patch, except for one, which made an otherwise valid patch (e.g. ones from subversion) rejected.
See commit e454ad4 (15 Feb 2018) by Tatyana Krasnukha (tkrasnukha).
See commit f16ef7b (15 Feb 2018) by Johannes Schindelin (dscho).
(Merged by Junio C Hamano -- gitster -- in commit 177bd65, 28 Feb 2018)
See also git-for-windows/git issue 1489
apply
: handle Subversion diffs with/dev/null
gracefullySubversion generates diffs that can contain lines like this one:
--- /dev/null (nonexistent)
Let's teach Git's apply machinery to handle such a line gracefully.
I had the same issue. I opened up Git Bash (Cygwin works as well) and did:
dos2unix.exe <patch-file>
Then I was able to apply the patch perfectly fine.
I also had the same problem:
fatal: git apply: bad git-diff - expected /dev/null on line 47
Yet line 47 reads --- /dev/null
. The problem I found was that the line endings were in Windows format instead of UNIX format. Converting the line endings to UNIX format in Notepad++ fixed the problem for me.
I had the same issue.
fatal: git apply: bad git-diff - expected /dev/null on line 96
Or, if I convert all line-endings to Unix format:
error: patch failed: <file>:81
error: <file>: patch does not apply
...
git apply --ignore-whitespace <patch>.patch
worked with Unix line-endings.
I had the same problem You have a rebase in progress, write
git rebase --skip
many times, until see No rebase in progress?
then try again with git am
I had the same issue, but I was testing a patch I was going to send to a listserve, following the recommendations here: https://www.kernel.org/doc/Documentation/email-clients.txt . I couldn't just fix the problem on my local file, I needed to distribute a patch which was potentially going to be mangled by gmail and I was checking the gmailed version with git apply
.
My co-worker pointed out to me that
git am
Is better than git apply
at correcting for these sorts of problems and is what should be used with .patch
files. This is mentioned in one of the comments above but it should be an answer.