Это нормально: вы только что создали новый проект:
$ mkdir newproj
$ cd newproj
$ git init
Initialized empty Git repository in .../newproj
На данный момент, нет ветвей .Тем не менее, как вам скажет git status
, вы находитесь на ветке master
:
$ git branch
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
$
Вы можете переключиться на другую ветку, используя git checkout -b
:
$ git checkout -b xyz
Switched to a new branch 'xyz'
и теперь у вас все еще нет ветвей, но теперь вы находитесь на ветке xyz
, как вам скажет git status
.
Это странное состояние нормально, , потому что нет коммитов.Когда нет коммитов, не может быть ветвей, потому что ветка name просто содержит идентификатор хэша некоторого существующего коммита.Без коммитов имя ветки не может существовать.
Когда вы создаете новый коммит, Git выполняет следующие шаги (первые несколько не в каком-либо определенном порядке; только последние несколько имеютфактический порядок):
- Соберите свое имя и адрес электронной почты, чтобы использовать его в новом коммите.
- Получите (представление вашего компьютера) о текущем времени, прикрепите к своему имени иадрес электронной почты.
- Соберите сообщение журнала.
- Заморозьте содержимое индекса (индекс, в котором вы создаете новые коммиты:
git add
копирует файлы из рабочего дерева в индекс). - Получить идентификатор хэша текущего коммита, если есть текущий коммит.Получить хэш-идентификатор всех коммитов, которые будут объединены, если это происходит.
- Используйте всю эту информацию для создания нового коммита.Создание коммита присваивает ему его хеш-идентификатор, который представляет собой криптографическую контрольную сумму всего этого содержимого (ваше имя и адрес электронной почты с отметкой времени, ваше сообщение журнала, хэш-идентификатор замороженного дерева и т. Д.).
- Запишите хеш-идентификатор, полученный при записи нового коммита.Хэш-идентификатор этого нового коммита входит в имя текущей ветви .Если имя ветви не существовало до этого момента, то сейчас оно существует.
Следовательно, до тех пор, пока вы не сделаете хотя бы один коммит, у вас могут быть любые имена ветвей,Но вы все равно можете выбрать, какое имя ветви является вашей текущей веткой, даже если эта ветвь не может существовать: это создание первого коммита, который создаст имя ветви.
(Однаждыу вас do есть по крайней мере один коммит, вы можете прикрепить столько имен, сколько хотите, к одному коммиту. Если у вас более одного коммита, вы можете прикрепить столько имен, сколько захотите, к каждому коммит, хотя большинству коммитов не нужны любые имена, прикрепленные к ним. Git находит их, работая в обратном направлении от более позднего коммита. Только последний коммит - tip ветви - когда-либо нужно имя, чтобы Git мог найти его, не найдя сначала коммит.)