세줄 요약

  • HEAD는 단지 포인터이고, 현재 작업 위치를 나타낸다.
  • HEAD는 기본적으로 branch를 가리키며, detached HEAD 상태에서는 특정 commit을 가리킨다.
  • git checkout 명령을 통해 특정 branch 나 commit 을 가리키게 할 수 있다.

HEAD 의 개념

이전 포스팅에서는 branch의 개념과 본질에 대해 살펴봤다. branch, commit과 함께 꼭 알아둬야 하는 것이 바로 HEAD 이다.

HEAD는 현재 체크아웃된(작업중인) branch 혹은 특정 commit를 나타내는 포인터이다. 보통은 현재 작업중인 commit을 가리키는 포인터의 의미로 많이 사용된다.

HEAD가 가리키는 것

대상 설명
브랜치 이름 보통 HEAD는 현재 체크아웃된(작업중인) branch를 가리킨다.
특정 commit detached HEAD상태에서 HEAD는 branch가 아닌 특정 commit을 직접 가리킨다.

(1) 보통의 경우 : 현재 체크아웃된 branch를 가리킨다

(2) detached HEAD : branch가 아닌 특정 commit을 직접 가리킨다

HEAD의 역할

HEAD는 현재 작업 트리와 인덱스(스테이지 영역)의 기준점으로 사용된다.

HEAD의 동작

-HEAD가 특정 branch를 가리키는 상태에서 새로운 commit 생성시, commit이 추가되고 -> branch 포인터가 새로 생성된 commit을 가리키고, HEAD 포인터는 이동된 branch 를 가리키게 된다.
-git checkout 명령을 사용하면 HEAD가 다른 branch 나 commit 을 가리킬 수 있다. 이는 작업 트리를 변경하지 않고 참조 포인터만 이동시킬 수 있음을 의미한다.

detached HEAD

git checkout 등의 명령으로 HEAD가 특정 branch 가 아닌 특정 commit 을 가리키는 경우 detached HEAD(분리된 헤드) 상태라고 한다. branch와 분리된 상태라는 뜻이다.

이 때에는 branch를 가리키지 않고 있으므로, 작업을 저장하려면 새로운 branch 를 생성해야한다. 이 점을 주의하자.

Reference

UNIX시스템 - 김희천,김진욱 저