Обоснование поведения `git checkout HEAD` - PullRequest
0 голосов
/ 08 октября 2019

При выполнении git checkout HEAD я извлекаю коммит, на который указывает HEAD. Я использую его для запуска некоторых хуков после выполнения, например, git reset --hard origin/master.

Каково обоснование того, что после выполнения этого действия не стоит отключаться от HEAD? В случае выше, я все еще в любой ветке, которую я проверил перед сбросом. У меня нет проблем с этим, но мне кажется, что семантика не соответствует другим операциям. Я ожидаю, что в итоге получу тот же коммит, но с отдельным HEAD (это также может быть полезно, возможно, как-то возможно).

1 Ответ

1 голос
/ 08 октября 2019

Используйте

git checkout --detach HEAD

или просто

git checkout --detach

, чтобы оформить фиксацию HEAD в отдельном состоянии HEAD.

Как говорится,checkout действительно может иногда вызывать некоторую путаницу (что побудило разработчиков git недавно ввести restore и switch).

Имейте в видучто в вашем теоретическом случае HEAD указывает не непосредственно на коммит, а на ветвь.

A---B---C <<< master <<< HEAD

Когда вы извлекаете HEAD, вы повторно извлекаете эту ветку, а не ее коммит-наконечник напрямую (если не указано иное).

...