В Git имя ветви, такое как master
, содержит идентификатор хеша коммита tip ветви. (Хеш-идентификатор - это уникальный идентификатор, который указывает, что один конкретный коммит. Ни у какого другого коммита никогда не будет такого хеш-идентификатора.)
Следовательно, имя master
всегда содержит идентификатор некоторого существующего действительного коммита.
В новом пустом репозитории нет коммитов. Вот список всех допустимых идентификаторов коммитов в новом, пустом репозитории: (). Какой из этих идентификаторов должен иметь master
в нем?
Пока вы не сделаете свой первый коммит, нет действительных идентификаторов коммитов , поэтому не может быть ветки master
. Сделайте свой первый коммит, когда вы находитесь на ветке master
, и ветка master
появится из ниоткуда. Теперь, когда в хранилище находится точно один комит, master
будет содержать его идентификатор (независимо от того, какой это идентификатор - они кажутся довольно случайными, хотя на самом деле они являются криптографической контрольной суммой всего, что вошло в фиксации).
Когда вы делаете второй коммит, master
будет содержать идентификатор этого нового коммита. Идентификатор первого коммита будет внутри второго коммита, так что Git может начать с конца - второй коммит - и работать в обратном направлении. Вот и все имя ветки: оно содержит идентификатор последнего коммита, с которого Git работает в обратном направлении до более ранних коммитов.
Если у вас есть несколько коммитов, вы можете иметь столько названий веток, сколько захотите. (Если у вас есть один коммит и много имен веток, все имена указывают на этот коммит, так как это единственный коммит. Это нормально для Git!) Впрочем, до тех пор вы не можете иметь никаких имен веток - и все же, вы еще на какая-то ветка. (Несуществующая) ветвь, в которой вы находитесь, обычно master
, будет создана путем создания первого коммита.