Возвращение зависимых ветвей темы
Я использую много локальных ветвей темы в 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 означает никогда не ждать отзывов в блогах.