▸ git-github-101
자료

HEAD란?

HEAD는 지금 내가 서 있는 위치입니다. git log를 실행하면 맨 위에 보였던 (HEAD -> main) 표시가 바로 그것입니다.

Git에서 HEAD는 보통 현재 브랜치를 가리키고, 브랜치는 그 브랜치의 최신 커밋을 가리킵니다. 이름표(브랜치)를 가리키는 또 하나의 이름표라고 보면 됩니다.

HEAD  ->  main  ->  커밋 a1b2c3d
(현재 위치)  (브랜치)   (실제 커밋)

checkout은 HEAD를 옮기는 일이었다

1일차에 git checkout으로 브랜치를 오가면 파일이 나타났다 사라졌습니다. 그 정체가 이것입니다. checkout은 HEAD를 다른 브랜치로 옮기는 일이고, HEAD가 옮겨가면 작업 디렉터리도 그 시점의 모습으로 바뀝니다.

뒤로 세는 표기: HEAD~1, HEAD~2

지금 위치를 기준으로 과거 커밋을 셀 때 ~ 표기를 씁니다.

표기 가리키는 곳
HEAD 지금 커밋
HEAD~1 한 칸 뒤 (바로 이전 커밋)
HEAD~2 두 칸 뒤

왜 지금 이걸 짚나요?

이후 배울 reset이 바로 이 표기를 씁니다. git reset --hard HEAD~1은 "지금 위치에서 한 칸 뒤로 되돌려라"는 뜻입니다. HEAD가 어디를 가리키는지 알면 되돌리기 명령이 훨씬 또렷하게 읽힙니다.


이제 HEAD라는 위치 감각을 잡았습니다. 다음은 특정 커밋에 고정된 이름표를 붙이는 태그를 살펴봅니다.