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