Image
CI\CD/Git

[Git] HEAD란 무엇인가?

HEAD란 무엇인가?

Git을 다루다보면 git log를 찍었을 때 HEAD가 특정 커밋에 찍혀있는 것을 볼 수 있다.  모든 브랜치에는 HEAD 값이 존재하는데 HEAD란 해당 브랜치의 마지막 커밋을 뜻한다. 

 

그림1. Git의 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

그림2. commit

 

 

위 표기의 HEAD는  feature-layout을 가리키고 있으며 master의 최신 커밋이 해당 커밋임을 가리킨다. 예를 들어 feature-layout에 추가적으로 커밋을 할 경우 다음과 같이 표기가 된다.

 

그림3. commit

 

HEAD는 항상 현재 브랜치의 최신 커밋을 포인팅한다. 그 외의 브랜치의 최신 커밋은 커밋 해시 뒤에 ([branch name]) 으로 표기된다.

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com