Возвращение зависимых ветвей темы

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

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

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

Ответы

Ответ 1

После перезагрузки featureA вы можете сделать

git rebase --onto featureA oldFeatureA featureB

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

В основном это должно быть таким же, как выбор вишни, каждый фиксация между A и B на восстановленной версии A.

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

Ответ 2

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

См. topgit означает никогда не ждать отзывов в блогах.