Image
CI\CD/Git

[Git] .git 내부에서 HEAD를 인식하는 방법

.git 내부에서 HEAD를 인식하는 방법

.git 내부에는 HEAD파일이 있다. 이 파일은 HEAD를 인식하기 위한 메타 데이터를 저장하는 파일이다.

 

그림1. .git 파일 내부

 

작업 중인 브랜치에 따라 변하는 HEAD파일

HEAD 파일은 현재 HEAD가 가리키는  해시 값을 저장하는 파일을 가리키는 reference 값을 저장한다. 따라서 HEAD 파일은 현재 작업중인 브랜치에 따라 값이 바뀌게 된다

 

예를 들어 main 브랜치에서 .git/HEAD를 확인할 때는 이 값은 "ref: refs/heads/main" 이 된다 하지만 feature-view 브랜치에서 .git/HEAD를 확인하면 이 값은 "ref: refs/heads/feature-view" 가 된다.

 

그림2. .git/HEAD

 

이 텍스트 값은 바로 현재 브랜치의 HEAD의 해시 값을 저장하는 공간으로 해당 값을 cat 해보면 해시 값이 나온다.

 

예를 들어 feature-view의 head hash값을 저장하는 ".git/refs/heads/feature-view" 를 cat 하면 해시 값이 "

4c7e3dd57379485fa99e7bc248077da76550bf68"로 나오며 git log를 이용해 해당 브랜치의 HEAD를 확인해보면 해시 값이 "

4c7e3dd57379485fa99e7bc248077da76550bf68"로 일치하는 것을 확인할 수 있다. 

 

그림2. refs 폴더

 

정리

.git 폴더 내부에 있는 HEAD 파일은 HEAD가 가리키는  해시 값을 저장하는 파일을 가리키는 reference 값을 저장하는 파일이며, 이는 .git 폴더의 refs/heads/ 디렉터리에 있는 브랜치명으로 생성된 파일이다. .git/refs/heads 폴더의 브랜치 파일은 내부에 해시값을 가지는데 이 해시값은 HEAD를 위한 커밋 해시값이다.

반응형

 

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

 

 

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

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

open.kakao.com