Что именно мы подразумеваем под «ветвью»?

Короче...

Насколько я могу судить, термин "ветвь" (на языке Git) может относиться к связанным, но различным вещам:

не символьная ссылка / указатель на коммит,название такой ссылки (например, «мастер»),подграф DAG коммита репозитория состоит из всех коммитов, достижимых из коммита, на который указывает такая ссылка.

Тем не менее, я видел термин, используемый для обозначения чего-то иного, чем эти три возможных использования (более подробно ниже). В контексте Git, есть ли другие допустимые и недвусмысленные использования термина «ветвь», которые отсутствуют в моем списке выше?

Подробнее

После года использования Git я готовлю краткое руководство для студентов CS. Я действительно хочу закрепить терминологию Git, чтобы избежать путаницы.

Конечно, я уже некоторое время использую ветки Git; Мне удобно их использовать, и я нахожу модель ветвления Git классной. Тем не менее, я все еще нахожу термин «ветвь» проблематичным и неоднозначным, потому что он, по-видимому, относится по меньшей мере к двум различным вещам, в зависимости от контекста, в котором он используется ... иногда даже в том же учебнике / руководстве.

Использование 1: ветвь = указатель / ссылка на коммит

Книга Pro Git (в3.1 - Что такое ветка), после показа следующей диаграммы,

продолжает определять ветвь как

просто легкий подвижный указатель на один из этих коммитов.

Насколько я могу судить, это также означает значение "ветка" на страницах руководства Git.

Я совершенно доволен этим определением. Я рассматриваю ветку как просто ссылку, указывающую на конкретную фиксацию в группе обеспечения доступности баз данных, а «коммит-подсказка» ветви - это фиксация, на которую указывает эта ссылка. Все идет нормально. Но ждать...

Использование 2: ветвь = подграф DAG

Учебник по Atlassian Git вводит ветки следующим образом:

Филиал представляет собой самостоятельную линию развития.

Я предполагаю, что они подразумевают под этим последовательность коммитов. Позвольте мне уточнить эту мысль ... Единственная интерпретация, которая имеет смысл для меня, состоит в том, что термин "ветвь" может также относиться кподграф DAG коммита репозитория, состоящий из всех коммитов, достижимых из рассматриваемого коммит-коммита.

Однако книга Pro Git, например, также содержит следующую диаграмму (см.3.4 - Ветвящиеся рабочие процессы),

что, кажется, противоречит моей интерпретации, потому что, кажется, подразумевает, что только совершаетC2-C5 (неC1) принадлежатdevelop ветвь, и это только совершаетC6-C7 (неC1-C5) принадлежатtopic ветка.

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

Я также нахожу некоторые диаграммы в других учебных ресурсах Git сбивающими с толку. Рассмотрим, в частности, следующее (взято из вступительного видеоLynda.com - Git Essential Training):

Здесь верхушкаmaster являетсяна самом деле 534de (а такжеHEAD указывает наmaster), но положение метки «master» на диаграмме очень обманчиво. Что этот ярлык должен описать в этом случае мне неясно ...

редактировать: С тех пор я нашел этоотличный пост в блоге Марка;ветви раздел повторяет мои замечания выше.

Ответы на вопрос(2)

Ваш ответ на вопрос