2013-12-03 5 views
2

Даже если я выберу только одну ветвь в расширениях git, она все равно показывает мне что-то вроде этого. Почему существуют дополнительные вертикальные линии? Как я узнал, красный - это ветка в моем локальном репо, почему есть отдельная синяя линия с тегами, почему они не на красной линии?git extensions отображает несколько «ветвей» даже если я выбираю только один

Редактировать: и что означают эти круги и прямоугольники?

enter image description here

+0

потому что другие ветви сливаются в эту, а не переустанавливаются. – Jepessen

ответ

1

мерзавец филиал в основном это имя, которое указывает на коммит, но совершить это указывает на обновляется всякий раз, когда новое обязательство добавляется в отрасли.

Git - это ациклический ориентированный граф. Каждый git commit имеет a) необязательный tree object, b) необязательный родительский коммит (или два или более родителей, если он является фиксацией слияния), и c) коммандит метаданных (имя коммиттера, сообщение электронной почты, сообщение фиксации и т. Д.). Это означает, что ветвь, которая в реализации является просто специальным обновлением, автоматически обновляемым указателем на фиксацию, представляет весь подграф, доступный путем перехода от этого фиксатора вдоль его родителей, их родителей и т. Д. В истории без слияний вы получите что вы ожидаете; единственная прямая линия коммитов. В истории слияния вы увидите, что у вас здесь, несколько путей, расширяющихся наружу (и слияние вовнутрь, когда фиксация началась двумя отдельными ветвями, которые впоследствии были объединены вместе.

+1

Технически каждая фиксация имеет * дерево *, а не набор изменений. -set вычисляется динамически: используйте commit для получения дерева, используйте commit-parent (или что-то действительно), чтобы получить другое дерево, разброс двух деревьев. Это не так важно для однопользовательской фиксации, но для многопользовательского (слияния) совершает технический момент начинает больше иметь значение. :-) И на самом деле git поддерживает «осьминог» (3 или более родителей). – torek

+0

Спасибо, я обновил ответ, надеюсь, будет более точным. – Sean

0

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

+0

Вы имеете в виду теги? – dhblah

+0

Да, могут быть теги ** также **. – Arenhag