Два указателя веток, но объединение одного - PullRequest
1 голос
/ 26 сентября 2011

Может ли кто-нибудь объяснить, почему в такой ситуации:

A--B--C--D  (master)
    \
     \E--F  (feature/xxx, feature/xxx-blah)

, если я выполняю слияние feature/xxx-blah с master, указатель ветвления фактически не перемещается?Коммит есть, указатель master расширен, но обе функции указывают на один и тот же коммит F.

Я ожидал, что вместо этого получится:

A--B--C--D--G  (master, feature/xxx-blah)
    \      /
     \E--F/  (feature/xxx)

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Это работает так, как задумано - когда вы объединяетесь, вы продвигаете только свою текущую ветку.Это на самом деле полезное свойство, так как если бы вместо этого оно работало так, как вы ожидали, вы не могли бы легко определить, что было только в вашей ветви функций после того, как вы слили ее - master и feature/xxx-blah будут содержать точноТот же коммит.

В большинстве случаев (в частности, "фарфоровые" команды) действия в git, которые создают новые коммиты, будут продвигать вашу текущую ветвь, но не будут продвигать другие ветви как побочные эффекты.

Еще один момент, на который стоит обратить внимание: вы можете объединяться с любым коммитом (или несколькими) - они не обязательно должны быть ветвями.

0 голосов
/ 20 ноября 2012

Тот факт, что вы комментируете выполнение no-ff слияний, объясняет, почему вы ожидали:

A--B--C--D--G  (master, feature/xxx-blah)
    \      /
     \E--F/  (feature/xxx)

Но, как уже упоминалось в " Почему git использует ускоренное слияние по умолчанию? ", no-ff не является значением по умолчанию.
Вы видите похожий сценарий в « Перемещение мастер-головки к ветви ».

...