Есть ли простая команда для слияния ветки темы путем ребазинга? - PullRequest
2 голосов
/ 15 февраля 2012

Начиная с ветки master, чтобы объединить ветку темы, нужно просто сказать

git merge topic

Однако, если кто-то хочет перебазировать, команды:

git rebase master topic
git checkout master
git merge topic

Последние две строки просто ускоряют переадресацию основной ветки на ветку темы, поэтому возможны изменения, например, Мне нравится следующий шаблон:

git rebase master topic
git rebase topic master

Это становится еще более сложным, когда состояние локальной "тематической" ветки должно быть сохранено:

git checkout -b tmp topic
git rebase master
git rebase tmp master
git branch -d tmp

Есть ли простая команда для этого? Что-то, что работает так же просто, как git-merge на CLI, но на самом деле выполняет ребаз, не перемещая ветку темы?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Нет идеальной команды, которая делает это за один раз, но есть довольно близкая секунда.

Если предположить, что topic будет корректно помещаться поверх master без конфликта, это будет работать с masterветвь:

git cherry-pick master..topic

master..topic - это набор изменений в topic, но не master, и выбор их по порядку - фактически перебаз, если topic чисто на master.

Для случая идеальной верности с двумя командами (или трех для сохранения topic) я бы не сделал два rebase с, как у вас, я бы сделал rebase иupdate-ref для ясности.

1 голос
/ 15 февраля 2012

Нет ничего встроенного, что делает это.Это достаточно сложная последовательность действий, которую на самом деле нетривиально реализовать: что вы ожидаете, если произойдет сбой ребазирования?

В любом случае, если вы не против делать дурацкие вещи, такие как использование ребаз, чтобыперемотка вперед, тогда вы можете предпочесть git push . topic:master, что, по крайней мере, обеспечит быструю перемотку вперед.

Лучшее, что вы можете сделать, - это псевдоним / сценарий, так что git merge-rebased master topic означаетgit rebase master topic && git checkout master && git merge topic, или любой другой вариант, который вы предпочитаете.

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