Переключиться на удаленную ветку, получив отсоединенную головку

Вот список всех моих ветвей:

$ git branch -a
* temp
  remotes/heroku/master
  remotes/origin/dev
  remotes/origin/master

Когда я набираю git checkout remotes/origin/master, чтобы переключиться на мой источник master, Git переключается в состояние автономного состояния HEAD. Почему?

Ответ 1

Это правильное поведение, так как вы проверили ветвь remote.

Если вы хотите проверить мастер и работать над ним, вы должны сделать это сейчас:

# checkout remote branch as local branch
# this will look up the branch name locally and if it does not find it it
#will checkout your remote branch with this name.
git checkout master

При проверке удаленной ветки вы просто указываете HEAD на последнюю фиксацию из этой ветки. Если вы хотите работать над ним, вы должны проверить его как локальную ветвь без remote/<branch>. Это автоматически проверит и создаст локальную ветвь с заданным именем.

Если вы хотите узнать больше о HEAD, прочитайте все об этом здесь.


Что такое отдельная головка?

Отсоединенный HEAD означает, что ваша HEAD указывает на фиксацию, которая не является последним в цепочке фиксации.

В этом примере commit # 4 является последним, а HEAD указывает на фиксацию # 2.

введите описание изображения здесь