GIT - ветви не закрываются после слияния - PullRequest
5 голосов
/ 29 июля 2011

мы довольно неопытны в использовании GIT.На самом деле нам нравится идея ветвей ;-) Но почему-то все слияния от одного пользователя просто не закрывают ветку ...

Вы можете посмотреть изображение здесь: http://i54.tinypic.com/297i14.png

Есть серая и синяя линия, которая только что вышла прямо ... даже после слияния ... Так что же он делает не так?Есть какие-нибудь подсказки?Я не хочу думать, что произойдет, если он создаст еще несколько ветвей, и все они сохранятся в историческом представлении даже после слияния ...

Большое спасибо!

Ответы [ 3 ]

15 голосов
/ 29 июля 2011

Когда вы делаете слияние, новый коммит только продвигает вашу текущую ветку. Имя ветви, которое указывало на другую ветку, остается там, где оно было. Другими словами, если у вас есть такая ситуация:

A---B---C blue
 \
  D---E---F grey

... и делай:

git checkout blue
git merge grey

В итоге вы получите:

A---B---C---G blue
 \         /
  D---E---F grey

Если вы хотите удалить ветку grey, вы можете сделать git branch -d grey. Это не повлияет на граф фиксации, просто удалите ветку - они похожи на метки, которые перемещаются по графу фиксации.

Однако, если вы продолжите и создадите больше коммитов на ветвях grey и blue, эти строки будут продолжаться:

A---B---C---G---H---I blue
 \         /
  D---E---F---J---K---L grey

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

3 голосов
/ 29 июля 2011

Я не уверен, что вы имеете в виду, закрывая ветку, но я сделаю предположение:)

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

Если вы не хотите этого делать, ветку можно удалить после объединения, которая окончательно закрывает ее, введя команду git branch -d <branch> находясь в другой ветке, как мастер.(Это приведет к удалению ветви только в том случае, если ее последняя фиксация была объединена с веткой, которую вы активировали, поэтому нет риска потери данных.)

1 голос
/ 29 июля 2011

В настоящее время git требует двухэтапного процесса для слияния и закрытия ветки 'task', где слияние номинально указывает на закрытие задачи и что ветка больше не требуется.

Может быть, для некоторых было бы полезно иметь возможность удалить запись refs / заголовки ветки, закрывая все за один шаг [сделать предложение в список git?]. Однако я уверен, что во многих рабочих процессах есть случаи, когда им нужна возможность вернуться назад и исправить некоторую незначительную проблему, которую раннее удаление сделало бы неудобной. (хотя это будет в рефлоге некоторое время)

Дайте пользователю задачу создания псевдонима или сценария для объединения двух действий. Это поможет образованию во всем; -)

...