2013-03-06 2 views
3

Я очень новичок в Git, но меня очень впечатляет облегченное ветвление/слияние, которое оно обеспечивает.Git объединяет ветку исправления в ветку функций, а затем удаляет ветвь исправления?

У меня есть три ветви в моем хранилище:

master 
1.1.0 
1.0.x 

Я сделал быстрое решение в 1.0.x отрасли, но мне интересно, если я должен немедленно объединить эти изменения обратно в 1.1.0? Или рекомендуется подождать, пока ветка 1.1.0 будет готова к выпуску в качестве младшей версии, чтобы снова объединить исправления?

А также, в этом образе:

git-scm branching

я притворяюсь, что iss53 = 1.0.x и master = 1.1.0 для этого примера. После того, как изменения в моей ветке исправления 1.0.x были объединены обратно в ветку функций 1.1.0, могу ли я продолжить работу с веткой 1.0.x?

Если я коммлю, работая на 1.0.x ветви, после выше слияния, это будет просто создать новую горизонтальную связь (чтобы представить его визуально) от гипотетического C7 фиксации, с одним родителем C5, или это будет имеют двух родителей, C5 и C6?

В этом разделе git-book (Git - Basic Branching and Merging) также упоминается удаление ветки после ее завершения, но, к сожалению, не показывают, как будет выглядеть граф после этого. Наверняка коммиты все еще там - этикетка просто удалена? (iss53 в приведенном выше примере.) И как только эта ветка удаляется, если вы обнаружите, что проблема 53 не была полностью исправлена, вы можете продолжить работу от C5, создав еще одну ветку iss53, или вам нужно дать ей другую имя, например iss53_2?

ответ

1

Я бы слил его, как только вы уверены, что это хорошо, и нужно идти в эту ветку. Слияние ранее более вероятно, будет успешным без ручного усилия :)

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

Вы можете легко сделать ветку снова, просто сделайте «git checkout -b iss53 xxxxxx», где xxxxx - это шестнадцатеричный код фиксации для фиксации, на которой вы хотите его установить. git reflog полезен для того, чтобы помочь найти требуемый коммит, поскольку он показывает всю недавнюю историю.

+0

Спасибо! «Если у вас есть коммиты, которые больше не доступны ни на одной этикетке, тогда они могут быть удалены сборкой мусора ...» Можете ли вы расширить это? Когда я могу получить ветку, которая недоступна? Разве я не смогу отслеживать пути своих родителей до тех пор, пока не найду объединенную фиксацию (например, C6), в которой есть два родителя? –

+1

@CraigOtis Я думаю, что @jcoder означает, что фиксация должна быть сборкой мусора в какой-то момент, когда на нее не ссылаются другие коммиты и метки. Когда вы удаляете ветку, ветка исчезла, и ее рефлок тоже исчез. На вашем графике удалите 'iss53', но все транзакции безопасны; но удалить мастер, C4 и C6 небезопасны. –

Смежные вопросы