Skip to content

HEAD와 브랜치의 관계 ​

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

정리 ​

대상가리키는 것
브랜치가장 최신 커밋 (포인터)
HEAD보통 브랜치를 가리키고, 브랜치를 통해 커밋을 간접적으로 가리킴

참고: 개인 Notion 학습 노트 (Git 공부)