2014-10-23 4 views
0

Глядя на мое Гит дерево у меня есть это (Примечание: ветви feature2 от от Feature1)Git перебазироваться хобот на тему

----b---c---d -"Feature1" 
    \ 
    \--e---f---g -"Feature2" 

Я хочу перебазироваться feature1 (Ь, с, d) на feature2 так будет читать efgbcd. Когда я запускаю rebase, три способа слияния, похоже, благоприятствуют Feature2, а изменения b, c и d's, похоже, исчезают.

Как я могу переустановить, где объединяются функции Feature1?

Типичный перебазироваться сценарий я бегу на есть дерево, которое выглядит следующим образом (Примечание отделения feature1 от feature2):

--e---f---g -"Feature2" 
\ 
\--b---c---d -"Feature1" 

Тогда было бы перебазироваться чисто, как Feature1 исторически основаны от feature2. Однако я замечаю, что моя текущая ситуация Feature2 отделяет Feature1.

+0

У вас есть конфликты? Если да, вы просто выполняете разрешение. Если нет, я не уверен, что вы подразумеваете под «благоприятством». Не могли бы вы привести пример? – musiKk

+0

Да, были конфликты, которые, казалось, начали стратегию слияния с тремя способами. В пользу я имею в виду, что у слияния есть выбор использования содержимого файла из Feature1 vs Feature2 для разрешения конфликта. –

+1

Поддерживает ли 'git rebase -s рекурсивную -X их функцию Feature2 Feature1'? – musiKk

ответ

1

Git rebase использует слияния, чтобы объединить одну фиксацию за другой в ветку, которую вы хотите переустановить. Это означает, что вы можете использовать все available merge strategies для переустановок. Стратегия слияния по умолчанию - recursive, которая для трех способов сливается. Его можно дополнительно настроить; в вашем случае должна быть одобрена ветка, подлежащая переустановке. Это соответствует опции theirs (помните, что стороны переключены на перебазу):

git rebase -s recursive -X theirs Feature2 Feature1 
Смежные вопросы