Для применения патчей в Git существуют две команды, это git apply и git am.
Как применить патч (git apply)
Для применения патчей, которые были созданы командой git diff, используется команда git apply:
git apply my-patch.patch
Данная команда применяет патч к вашим текущим файлам в рабочем каталоге. Никаких коммитов не создается.
Как применить патч и создать коммит (git am)
Если патч был создан на основе какого-либо коммита, и для создания патча была использована команда format-patch, то такой патч содержит в себе информацию об авторе коммита и комментарий (сообщение) к коммиту.
Чтобы применить такой патч и сразу же автоматически создать коммит, используется команда git am:
git am --signoff < my-patch.patch
Использование ключа --signoff позволяет дописать в комментарий к коммиту свое имя — в комментарии к коммиту будет добавлена строка «Signed-off-by: ваше имя». Делается это для того, чтобы в будущем определить, кто именно применил данный патч.
Как аккуратно применить патч
Хорошей практикой является применение патча с предварительной проверкой того, что этот патч будет успешно применен. То есть вы до применения патча сможете подготовить свой код. Это позволяет избежать конфликтов и некоторых других последствий.
Сначала можно посмотреть, что именно будет изменять патч, для этого выполняется команда git apply с ключом --stat. Эта команда выводит статистику о патче и не изменяет никаких ваших файлов.
git apply --stat my-patch.patch
Затем проверяем, что будет, если применить патч. То есть можно проверить, не применяя патч, что произойдет, если его применить. Для этого используется команда git apply с ключом --check. Данная команда только выполняет проверку, патч не применяется, ваши файлы не изменяются.
git apply --check my-patch.patch
Если никаких ошибок не отобразилось, то при применении данного патча никаких проблем не будет. В противном случае вы сможете увидеть, какие возникнут ошибки, если применить патч.
Теперь можно применить патч:
git apply my-patch.patch
Или, используя git am:
git am --signoff < my-patch.patch
Комментарии