SCM/Git

[Git & GitHub 7] detached HEAD

ride-dev 2024. 5. 10. 14:41

HEAD는 일반적으로 특정 브랜치의 가장 최근 커밋을 가리킵니다.

HEAD는 일반적으로 커밋이 아닌 특정 브랜치를 참조합니다.

detached HEAD

git checkout <commit> 명령어를 통해 HEAD를 특정 커밋 시점으로 이동할 수 있습니다.

git checkout <commit hash>

이 때의 HEAD를 detached HEAD(분리된 헤드)라고 합니다.

일반적으로 .git/HEAD는 branch의 경로를 가리킵니다.

$ cat .git/HEAD
ref: redfs/heads/branch1

그러나 detached HEAD는 커밋을 가리키게됩니다.

git checkout 3f
$ cat .git/HEAD
3f

분리된 헤드를 브랜치로 되돌리고 싶다면,

git switch 또는 git checkout 명령어를 사용하여 브랜치로 이동합니다.

 

분리된 헤드를 기반으로 branch를 생성할 수도 있습니다.

이 때 생성하는 branch는 detached HEAD 이후의 변경사항이 반영되지 않습니다.

과거의 commit을 기준으로 hotfix branch 생성

detached HEAD로 checkout 할 때, HEAD를 기준으로 checkout 할 수 있습니다.

git checkout HEAD~n

728x90