HEAD란 무엇인가?
Git을 다루다보면 git log를 찍었을 때 HEAD가 특정 커밋에 찍혀있는 것을 볼 수 있다. 모든 브랜치에는 HEAD 값이 존재하는데 HEAD란 해당 브랜치의 마지막 커밋을 뜻한다.
따라서 아래와 같이 HEAD가 특정 커밋에 찍혀 있을 경우 해당 브랜치의 마지막 커밋이 해당 부분이라는 것을 알 수 있게 된다. 즉, HEAD는 특정 브랜치의 마지막 커밋에 대한 포인터이다.
HEAD -> [branch name]
다른 브랜치의 HEAD확인하기
위의 master branch에서 다음 명령어를 이용해 feature-layout이라는 새로운 브랜치를 만들었다고 해보자.
git checkout -b "feature-layout"
브랜치를 새로 만들게 되면 이전 master의 commit들이 그대로 새로운 branch의 commit이 된다. 그렇게 되면 master branch의 마지막 커밋은 feature-layout branch의 마지막 커밋이 되며 feature-layout branch의 HEAD가 된다.
그런데 표기를 보면 매우 신기하게 표기되는 것을 확인할 수 있다.
HEAD -> feature-layout, master
위 표기의 HEAD는 feature-layout을 가리키고 있으며 master의 최신 커밋이 해당 커밋임을 가리킨다. 예를 들어 feature-layout에 추가적으로 커밋을 할 경우 다음과 같이 표기가 된다.
HEAD는 항상 현재 브랜치의 최신 커밋을 포인팅한다. 그 외의 브랜치의 최신 커밋은 커밋 해시 뒤에 ([branch name]) 으로 표기된다.
반응형