Создание патча:
git diff > my_patch.patch
(создаст патч со всеми изменениями с момента последнего коммита) или git diff commit1 commit2 > my_patch.patch
(создаст патч с изменениями между commit1 и commit2).Применение патча:
git apply my_patch.patch
.git add .
и git commit -m "Applied patch"
.Альтернативный способ применения патча (с проверкой): git apply --check my_patch.patch
(для проверки, применяется ли патч без ошибок) и git am < my_patch.patch
(для применения патча в виде электронной почты).
Чтобы создать патч и применить его в другом репозитории, можно использовать следующие команды Git:
Создание патча:
<начальный_коммит>..<конечный_коммит>
.git format-patch
для создания патча. Например:git format-patch HEAD~1
(создает патч для коммита, предшествующего последнему)git format-patch <branch_name>
(создает патчи для всех коммитов на ветке <branch_name>, которые еще не присутствуют в текущей ветке)git format-patch <начальный_коммит>..<конечный_коммит>
(создает патчи для коммитов в указанном диапазоне)git format-patch -1 <commit_hash>
(создает патч для конкретного коммита).patch
. Имя файла будет основано на сообщении коммита.Применение патча:
git apply
для применения патча. Например:git apply <путь_к_патч_файлу>
git apply 0001-Fix-bug.patch
git commit -m "Applied patch from another repository"
Альтернативный способ применения патча (более надежный):
Иногда git apply
может выдавать ошибки, особенно при сложных патчах. В таком случае можно использовать git am
, который предполагает, что патчи отформатированы как электронные письма:
git format-patch
с параметром --stdout
для вывода патча в стандартный поток вывода, а затем перенаправьте его в файл. Например: git format-patch --stdout HEAD~1 > mypatch.patch
git am < mypatch.patch
. git am
автоматически применит изменения и создаст коммит.git apply
. После разрешения конфликтов, используйте git am --continue
для продолжения.Важные замечания: