Перебазирование зависимых веток темы - PullRequest
15 голосов
/ 10 октября 2009

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

master ---> featureA ---> featureB
                     \--> featureC

Если master изменяется, и я получаю (и разрешаю) конфликты при перебазировании featureA, то впоследствии перебрасывание featureB на featureA вызывает те же конфликты (а иногда и захватывающие новые), потому что он пытается повторно применить патчи из ветки featureA. Предполагая, что фактические патчи между featureA и featureB будут применяться корректно, если будет выбрана вишня, есть ли способ сделать ребаз в этой ситуации примерно с тем же эффектом, что и выбор вишни для всех коммитов между featureA и featureB

Ответы [ 2 ]

17 голосов
/ 10 октября 2009

После перебазирования featureA можно сделать

git rebase --onto featureA oldFeatureA featureB

при условии, что oldFeatureA представляет коммит на кончике featureA перед тем, как перебазировать его (вы можете оставить там другую ветку или просто запомнить хеш коммита).

Это должно быть практически то же самое, что вишня, выбирающая каждый коммит между А и В в перебазированную версию А.

Документация по git-rebase (включает некоторые полезные графические пояснения того, что происходит во время некоторых более сложных операций rebase)

6 голосов
/ 10 октября 2009

В будущем, если вы работаете с множеством взаимозависимых веток тем, возможно, вам следует рассмотреть возможность использования TopGit ( README ), инструмента для управления очередью патчей с использованием веток тем Git один патч на ветку; или, альтернативно, инструмент для управления несколькими ветками тем.

См. Например topgit означает «никогда не нужно ждать отзывов» сообщений в блоге.

...