branch 는 41 byte 파일
이 quest 전체에서 가장 중요한 문장: Git 의 branch 는 commit 을 가리키는 movable pointer 야. 복사본 아니야. 폴더 아니야. snapshot 아니야. hash 하나에 newline 붙은 41 byte 파일. branch 만들기 = 파일 한 번 쓰기. 이 한 줄이 Git 이 모든 일에 branching 을 권장하는 이유 (기능 작업, 실험, 일회용 디버깅, 코드 리뷰) 와 SVN 출신 팀들이 속도에 놀라는 이유야.
.git/refs/heads/ 들어가면 직접 보여. 파일 이름이 branch 이름, 파일 내용이 그 branch 가 현재 가리키는 commit hash. main, feature/login, chore/cleanup — 한 디렉토리의 형제들. 'main 이 특별하다' 는 마법 없어. 관습이 main 을 통합 branch 로 지정하고 도구가 강제할 뿐, 데이터 모양은 똑같아.
pointer 가 가리키는 게 그 branch 의 tip 이야. tip 에서 parent pointer 따라 거꾸로 걸으면 branch history 가 나와. old commit 을 공유하는 두 branch 는 거꾸로 걸으면 둘 다 공유 commit 에 도달해. 이게 Git 이 'feature 에 있고 main 에 없는 것' 을 계산하는 방법 — 도달 가능한 commit 의 set difference, 복사 없이.
함의가 멀리 가. branch 이름 바꾸기 = 파일 이름 바꾸기. branch 삭제 = 파일 제거 (commit 은 남아 orphaned, GC 가 정리). branch switch = HEAD 가 다른 ref 가리키게 하고 working tree 를 새 tip 에 맞춤. branch 를 pointer 로 보기 시작하면 나머지 branching 이 마법 같지 않고 file 연산 같아져.