Git을 명령어 모음으로 외우면 언젠가 막힌다. 커밋이 무엇인지, 브랜치가 어디를 가리키는지, HEAD가 어떻게 움직이는지 — 그 그림을 한 번 그려두면 모든 명령이 같은 모형 위의 작은 동작으로 보인다. 이 책은 Git을 커밋 그래프 위의 움직임으로 다시 가르친다.
Git은 변경분(diff)이 아니라 스냅샷을 저장한다. 커밋은 트리·부모·메시지를 묶은 불변 객체이며, SHA 해시가 그 정체성이다.
02장브랜치는 무겁지 않다 — 그저 커밋 하나를 가리키는 41바이트 포인터다. HEAD는 "지금 내가 선 자리"를 가리키는 포인터의 포인터다.
fast-forward는 포인터를 앞으로 미는 것뿐이다. 진짜 병합은 부모가 둘인 머지 커밋을 만든다. 둘의 차이를 그래프로 본다.
04장리베이스는 커밋을 복사해 다른 베이스 위에 다시 심는다. 히스토리는 깔끔해지지만, 원본 커밋은 사라진다 — 그 대가를 안다.
05장원격은 또 하나의 저장소일 뿐이다. fetch는 가져오고, push는 보내고, pull은 fetch + merge다. 원격 추적 브랜치의 정체를 밝힌다.