💙 Help Ukraine, click for information 💛

Как применить патч даже если git морозится

Oct. 31, 2017

Git располагает широким ассортиментом вариантов делится изменениями без отправления этих изменений на origin. Одним из самых распространённых решений такой проблемы являются патчи. Их легко получить и применить на одном компьютере. Но что делать если на другом компьютере не применяется патч, не переносить же изменения руками?

Что-бы понять в чём дело можно включить болтливый режим при помощи флага -v –verbose:

$ git apply --verbose feature-name.patch

Если проблема окажется в пробельных символах (whitespace). Можно попробовать проигнорировать или пофиксить их:

$ git apply --ignore-space-change --ignore-whitespace feature-name.patch
$ git apply --reject --whitespace=fix feature-name.patch

Если патч всё ещё не применяется или проблема не в символах отступа, то стоит воспользоваться утилитой patch. Делается это так:

$ patch -p1 < feature-name.patch

В отличие от git apply эта утилита не остановится на первом неудавшемся ханке, а будет идти дальше по патч-файлу. Для файлов у которых применились все изменения будет созданы .orig файлы, для тех же у которых были проблемы будут созданы .rej файлы. Теперь осталось в ручную поправить .rej файлы и удалить .orig файлы.