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

Posted by PDSW on Tuesday, October 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 файлы.


comments powered by Disqus