Git HEAD: Указатель на текущую ветку и коммит

В 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 будет указывать на первый.

Что будем искать? Например,программа