Где я? * (без ветки)

Я знаком с созданием, объединением и удалением веток. Мне нравится знать, где я, поэтому я не совершаю работу в неправильной ветке. Я использую git branch -a, чтобы узнать, какие ветки у меня есть. Я думаю, что asterix * показывает, в какой ветке я сейчас. Что это значит, когда я получаю:

* (no branch)
master
origin/HEAD

код >

Потому что, когда я $git checkout mybranch, я ожидаю увидеть

* mybranch
master
origin/HEAD

код >

Ответ 1

В справочной странице git указывается аргумент имени ветки:

<branch>

Отладка для проверки;

  • если он ссылается на ветвь (то есть имя, которое при добавлении с "refs/heads/" является действительным ссылочным номером), то эта ветвь проверяется.
  • В противном случае, если это относится к действительной фиксации, ваш HEAD становится "отсоединенным", и вы больше не находитесь в какой-либо ветке.

Итак, вместо того, чтобы проверить имя ветки, вы должны проверить имя тега (действительный фиксатор), сделав HEAD отсоединенным.

Ответ 2

Не похоже, что у вас есть ветвь с именем mybranch. Если вы хотите создать ветвь, указывающую на текущую головку, используйте git branch foo.

Если вы хотите, чтобы он указывал на другой номер ссылки, используйте git checkout -b newbranch <ref>