git format-patch в настройке нескольких веток
1. Аннотация
Моя конечная цель состоит в том, чтобы перенести некоторые изменения Клиента, сделанные в ветви Клиента в репозитории linux-kernel, в другой репозиторий linux-kernel, учитывая тот факт, что оба имеют общий базовый тег (например, v4.2, из которого была ветвь Клиента). изначально создан).
Для этого я пытаюсь создать стек патчей, представляющих разницу между базой и главой клиентской ветви. На этом первом этапе я использую git format-patch
, Второй шаг заключается в применении этих патчей во втором репо с использованием git am
,
git diff
и GNU diff
меня не интересуют, так как я не хочу потерять метаданные фиксации (автор, сообщение и т. д.).
2. Настройка демо
Я создал простой поток git commit, чтобы проиллюстрировать проблему. На следующих графиках изображены настройки филиалов этого демо-репо:
Gitg
graph - порядок времени фиксации:Gitg
график - топологический порядок:Gitk
график:
3. Действия по воспроизведению проблемы
$ git status
On branch master Your branch is up-to-date with origin/master. nothing to commit, working directory clean.
$ git format-patch BASE
0001-commit-2-br1.patch
$ git checkout BASE
HEAD is now at 65772fd... commit 3-master
$ git apply 0001-commit-2-br1.patch
error: patch failed: file:1 error: file: patch does not apply
4. Дополнительная информация и вопросы
git diff BASE f316460 > my.patch
работает! Однако, как указано в аннотации, это не решение для меня.я верю
git format-patch
просто не достаточно умен в настройке нескольких филиалов. Кто-нибудь сталкивался с такими же проблемами?Существуют ли способы достижения той же цели без
git format-patch
?