Подтвердить что ты не робот

Применение файла diff с помощью git

Итак, я пытался использовать файл diff в моей ветке git dev. Мне хотелось применить этот diff: 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, несмотря на то, что они НЕ являются конечными пробелами.

В любом случае diff генерируется git - я просто копирую и вставляю его в блокнот.

Я также пытался использовать curl https://github.com/mbabker/joomla-cms/compare/JHtml_move.patch | git am, но это просто дает ошибку без указания местоположения.

Error message from curl attempt

Любые идеи относительно того, почему он дает фатальную ошибку, когда линия действительно существует????


Обновить до @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 веток. Таким образом, я сделал это, а затем снова получил неверную ошибку электронной почты (несмотря на то, что я изменил оба из формата html)

4b9b3361

Ответ 1

У меня также была та же проблема:

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

Однако строка 47 читает --- /dev/null. Я обнаружил, что окончание строк было в формате Windows вместо формата UNIX. Преобразование окончаний строки в формат UNIX в Notepad ++ исправило проблему для меня.

Ответ 2

У меня была такая же проблема. Я открыл Git Bash (работает Cygwin) и сделал:

dos2unix.exe <patch-file>

Тогда я смог применить патч прекрасно.

Ответ 3

У меня была такая же проблема, но я тестировал патч, который я собирался отправить в список рассылки, следуя рекомендациям здесь: https://www.kernel.org/doc/Documentation/email-clients.txt. Я не мог просто исправить проблему в своем локальном файле, мне нужно было распространять патч, который потенциально будет искажен gmail, и я проверял версию gmail с помощью git apply.

Мой сотрудник указал мне, что

git am 

Лучше, чем git apply при исправлении этих проблем, и что должно использоваться с файлами .patch. Это упоминается в одном из комментариев выше, но это должен быть ответ.

Ответ 4

У меня была такая же проблема У вас есть ожидание, напишите

git rebase --skip 

много раз, пока не увидите No rebase in progress? затем повторите попытку с помощью git am

Ответ 5

У меня была такая же проблема.

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.

Ответ 6

У вас может быть некоторый дополнительный текст в этой строке, у меня был ---/dev/null (nonexistent)

Удаление всех символов из "null" до конца строки помогло мне (после применения предложений из других ответов).

Ответ 7

Вам нужно будет проверить, не отображается ли сообщение ошибки bad git-diff - expected/dev/null on line 47 после Git 2.17 (Q2 2018).

Многие места в " git apply " знали, что " /dev/null ", который сигнализирует "нет такого файла на этой стороне diff", может сопровождаться пробелом и мусором при анализе патча, за исключением одного, который сделал иначе действительный патч (например, из подрывной деятельности) отклонен.

См. Фиксацию e454ad4 (15 февраля 2018 года) Татьяной tkrasnukha (tkrasnukha).
См. Commit f16ef7b (15 февраля 2018 г.) Йоханнесом dscho (dscho).
(Слияние с Юнио С Хамано - gitster - в совершении 177bd65, 28 февраля 2018 года)

См. Также git-for-windows/git issue 1489

apply: обрабатывать Subversion diff с /dev/null изящно

Subversion генерирует различия, которые могут содержать строки, подобные этой:

---/dev/null (несуществующий)

Позвольте научить Git применять механизмы, чтобы обработать такую линию изящно.