В Git можно создавать множество веток и коммитов. В любой момент времени в рабочей директории присутствует только один вариант проекта. HEAD — это указатель, определяющий текущую ветку или коммит.
Что такое HEAD в Git?
HEAD — указатель на конкретную ветку или коммит. Он единственный, в отличие от множества веток и коммитов. HEAD указывает на текущий снимок проекта.
Свойства HEAD:
- HEAD — ссылка на текущую ветку или коммит.
- HEAD локально значим. Изменение HEAD на локальном компьютере не влияет на удалённый репозиторий.
- Git хранит HEAD в файле HEAD в корневой папке .git. Этот файл содержит указатель на последний коммит текущей ветки.
- Указатель по умолчанию — ref: refs/heads/master. Этот файл хранит указатель на последний коммит ветки master.
Файл HEAD содержит строку ref: refs/heads/master. Путь refs/heads/master указывает на SHA1-хеш последнего коммита ветки master. Таким образом, HEAD указывает на ветку master, а та — на последний коммит.
Изменение позиции HEAD
Позицию HEAD можно изменить, направив его на конкретную ветку или коммит.
Команда git checkout <имя_ветки> (например, git checkout new_branch) переключает HEAD на указанную ветку. git checkout master возвращает HEAD на ветку master.
Команда git checkout с SHA-хешем коммита переключает HEAD на этот коммит. В этом случае HEAD будет указывать на конкретный коммит, а не на ветку. Например, переключение на первый коммит оставит master указывающим на второй коммит, но HEAD будет указывать на первый.