Что-то важное для реализации - ветки Git - это не что иное, как ярлык, указывающий на фиксацию. Ветвление в Git буквально разветвляется. Вот что такое хранилище выглядит как если feature
ответвляется master
когда master
был коммита B.
A - B - C - F - H [master]
\
D - E - G - I[feature]
См? Фактическая ветвь. Когда вы введете git merge feature
в мастера, вы получите это.
A - B - C - F - H - J [master]
\ /
D - E - G - I [feature]
И как только вы git branch -d feature
история отрасли остается!
A - B - C - F - H - J [master]
\ /
D - E - G - I
J имеет родителей H и I. J не может существовать без них, это запекается в том, как работает Git. Я не могу существовать без G. G не может существовать без E. И так далее. Филиал должен оставаться
J - это слияние, которое, как правило, будет содержать имя ветки, которая будет объединена. Это похоже на любую другую фиксацию, поэтому вы можете добавить к ней больше информации, например, ссылку на ваш трекер.
git merge --no-ff
используется, чтобы Git не выполнял «быструю перемотку вперед» и не терял историю ветвей. Это происходит, если не была выполнена работа над master
, так как была создана ветка. Быстрая перемотка выглядит так.
A - B[master]- D - E - G - I [feature]
git checkout master
git merge feature
A - B - D - E - G - I [feature] [master]
Поскольку master
является прямым предком feature
, не требуется никакого слияния. Git может просто переместить лейбл master
. История вашего филиала потеряна, похоже, что D, E, G и я все были сделаны как отдельные фиксации на хозяине. git merge --no-ff
говорит Git, чтобы никогда не делать этого, чтобы всегда выполнять слияние.
В будущем, когда в G обнаружена ошибка, любой, кто просматривает репозиторий, может видеть, что это было сделано как часть ветки, загляните вперёд, чтобы найти фиксацию слияния и получить информацию о ветке оттуда.
Даже если это так, зачем удалять ветку?Две причины. Во-первых, это загромождает ваш список ветвей с мертвыми ветвями.
Во-вторых, и, что более важно, это предотвращает повторное использование ветви. Ветвление и слияние сложны. Однопользовательские, недолговечные ветви функций упрощают процесс, гарантируя, что вы только сливаете ветвь обратно в мастер один раз. Это устраняет многие технические проблемы и проблемы управления. Когда вы объединяете ветку, это сделано. Если вам нужно исправить проблему, появившуюся в этой ветке, просто рассматривайте ее как ошибку в главном и создайте новую ветку, чтобы исправить ее.
К сожалению, git log
принадлежит пользователю и представляет линейное представление истории, не являющейся линейной. Чтобы исправить это, используйте git log --graph --decorate
. Это будет рисовать строки, как в моих примерах выше, и показывать вам любые ветки и теги для каждой фиксации. Вы получите более точное представление о репозитории.
Если вы находитесь на Mac, GitX отобразит репозиторий для вас. gitk - это общая версия.
Потому что ваша функция закончена. Какая же необходимость сохранить ветвь, тем самым загромождая результат ветви git -a и т. Д.? –
@OliverCharlesworth история –
@ Z.Khullah - Забытия все еще будут в истории. –