Есть ли способ просто добавить коммит с интерактивным перебазированием? - PullRequest
0 голосов
/ 22 февраля 2019

Допустим, у меня есть ветвь, основанная на master, которая заканчивается коммитом слияния:

--A---C<master]---D---E---F<my-feature]
   \ / 
    B

Добавление коммита X между D и E с интерактивным перебазированием просто - я запускаю

git rebase -i master

, установите коммит D для операции edit, после перебазирования D перебазирование прекращается.Я просто создаю новый коммит в тот момент, а затем продолжаю ребаз.Ветка теперь выглядит как

...C<master]---D---X---E'---F'<my_freature].

Теперь я хочу добавить коммит между C и D.Желаемый результат:

C<master]---X---D'---E'---F'<my_freature]

Я пытался

git rebase -i master~

, где я хотел установить коммит слияния C в edit, но интерактивная перебазировка как-то игнорирует коммит слияния C и предлагает мне только цепочку A--B--D--E, поэтому перебазировка приводит к потере коммит слияния C.

Есть ли простой способ добавить коммит кветвь с интерактивной перебазировкой, как это?

Обратите внимание, что я могу придумать немного более сложное решение, такое как создание новой ветки tmp на master, фиксация X, затем перебазировкаmy-feature на tmp, мне просто любопытно, есть ли простой и прямой способ с интерактивной перебазировкой.

1 Ответ

0 голосов
/ 22 февраля 2019

Я только что успешно воспроизвел ваш сценарий и вставил коммит X между C и D, добавив параметр -p (--preserve-merges) в `git rebase:

git rebase -i -p master^

остальная часть рабочего процессакак вы описываете: скажите rebase, чтобы редактировать коммит слияния, вручную вставьте новый и закончите с git rebase --continue.

Кстати, крутой рабочий процесс!Я думаю, что я буду использовать его.

Редактировать: я тестировал это решение с Git 2.4.Если у вас более свежая версия Git, @torek рекомендует использовать более безопасный вариант --rebase-merges вместо --preserve-merges.См. Комментарии ниже для объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...