HEAD와 브랜치의 관계
- 사실 **브랜치(branch)**는 커밋을 가리키는 존재(포인터)이고,
- HEAD는 이런 브랜치를 통해 커밋을 간접적으로 가리키는 존재(포인터)
- 브랜치(branch)의 역할
- 브랜치는 프로젝트의 코드를 관리하는 ‘하나의 흐름’이에요.
- 브랜치는 사실상 “가장 최신의 커밋”을 가리키는 포인터 역할을 해요.
- 커밋들은 선형적으로 이어져 있기 때문에 브랜치가 최신 커밋만 가리켜도, 예전 히스토리까지 모두 추적할 수 있어요.
- HEAD의 역할
- HEAD도 커밋을 가리키는 포인터이지만, 일반적으로 브랜치를 직접 가리켜요.
- 즉, HEAD가 가리키는 브랜치가 다시 최신 커밋을 가리켜서, 간접적으로 커밋을 참조하게 돼요.
- HEAD가 가리키는 브랜치(예: master, premium)에 따라 워킹 디렉토리 내용이 바뀌어요.
- 커밋 & 브랜치 이동
- 새로운 브랜치를 만들면 HEAD가 가리키는 커밋을 그 브랜치도 가리켜요.
git checkout [브랜치명]으로 브랜치를 변경하면, HEAD가 해당 브랜치로 이동해요.- 브랜치마다 독립적으로 커밋을 쌓을 수 있으며, 각 브랜치는 자신만의 커밋 히스토리를 가질 수 있어요.
- 서로 다른 브랜치에서 커밋을 하게 되면, 커밋 히스토리가 ’분기(Branch)‘됨.
- 머지(Merge)
- HEAD가 가리키는 브랜치에, 다른 브랜치의 변경사항(커밋)들을 합쳐서 새로운 커밋을 생성해요(merge 커밋).
- merge는 히스토리상 두 브랜치의 작업을 한 데 합치는 과정이에요.

정리
| 대상 | 가리키는 것 |
|---|---|
| 브랜치 | 가장 최신 커밋 (포인터) |
| HEAD | 보통 브랜치를 가리키고, 브랜치를 통해 커밋을 간접적으로 가리킴 |
참고: 개인 Notion 학습 노트 (Git 공부)
