Создайте файл патча или 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
,
вы можете применить две команды
-
git diff --patch > mypatch.patch // to generate the patch
-
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`