Можно ли объединять / перебазировать ветки не прямых отношений? - PullRequest
1 голос
/ 20 мая 2010

В качестве интеграционного теста я хотел бы присоединиться к нескольким веткам, прежде чем объединить их с моим мастером.

Все они отошли от мастера и пошли своим путем. Это правильное объединение разных веток без прямой связи (например, родитель / потомок) ??

Есть ли хорошая практика для воссоединения ветвей ??

Заранее спасибо, Рауль.

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Если все эти ветви исходят от мастера, у них есть общий предок

     y--y--y
    /
x--o--x--x--x--x--x--x
          \
           z--z--z

('o' здесь общий предок)
В этом случае слияние в ветке интеграции является хорошим подходом (перебазирование такой долгоживущей ветки потребовало бы переписывания слишком большой общедоступной истории)

Если ветви действительно отделены друг от друга, то точки прививки git теоретически могут позволить общую историю: см. Как объединить две ветви без общего предка? .
Но это не идеально, так как точка пересадки не зафиксирована.
filter-branch может сделать модификацию постоянной, но это переписывает историю.

0 голосов
/ 21 мая 2010

Если все эти ветви исходят от мастера, у них есть общий предок.


Но, отвечая на ваш вопрос (но не на вашу проблему), можно объединить две истории без общего предка, например два разных проекта, используя, например, стратегию слияния «поддерево» git merge.

Чтобы переместить одну ветку поверх другой, у которой нет общего предка, вам нужно будет использовать опцию --root для git rebase.

...