Создайте файл патча или diff из репозитория git и примените его к другому другому репозиторию git

Я работаю над проектом на основе WordPress и хочу исправлять свой проект при каждой новой версии WP. Для этого я хочу создать патч между двумя коммитами или тегами.

Например, в моем репо / www / WP я делаю это:

$git patch-format com1..com2 --stdout > ~/patchs/mypatch.patch

Или же

$git patch-format tag1..tag2 --stdout > ~/patchs/mypatch.patch

/www/WP git natif WordPress

/www/myproject Мой git проект на основе WordPress

git applyкомандная строка не работает, я думаю, потому что мы находимся в разных хранилищах.

Могу ли я сгенерировать файл патча без фиксации разницы и применить его к другому git-репозиторию?

Спасибо заранее.

7 ответов

Вы можете просто использовать git diff производить унифицированный дифференциал, подходящий для git apply:

git diff tag1..tag2 > mypatch.patch

Затем вы можете применить полученный патч с помощью:

git apply mypatch.patch

Чтобы создать патч для нескольких коммитов, вы должны использовать format-patch команда git, например

git format-patch -k --stdout R1..R2

Это экспортирует ваши коммиты в файл патча в формате почтового ящика.

Чтобы сгенерировать патч для последнего коммита, запустите:

git format-patch -k --stdout HEAD^

Затем в другом хранилище примените патч am команда git, например

git am -3 -k file.patch

Увидеть: man git-format-patch а также git-am,

вы можете применить две команды

  1. git diff --patch > mypatch.patch // to generate the patch
  2. git apply mypatch.patch // to apply the patch

В качестве дополнения, чтобы создать патч только для одного конкретного коммита, используйте:

git format-patch -1 <sha>

Когда файл патча создается, убедитесь, что ваше другое репо знает, где он находится, когда вы используете git am ${patch-name}

Перед добавлением патча используйте git apply --check ${patch-name} чтобы убедиться, что нет конфликта.

Используйте эту команду.

      git diff master..localbranch > file.patch

Вы даже можете делать патчи только для подкаталога, в котором вы сейчас находитесь. Просто добавьте .

      git format-patch -k b365cce8..80a2c18a .

Затем вы можете применить их:

      git am *.patch

См. Этот ответ для подробностей

Вы можете применить две команды для создания патча, вы сначала внесете изменения в свой код, а затем вам нужно применить эти команды:

      1. `git diff --patch > mypatch.patch` // to generate the patch`
2. `git apply mypatch.patch` // to apply the patch`
Другие вопросы по тегам