Git이 파일이 아닌 SHA로 세상을 보는 이유
Content-Addressable Storage의 두 가지 결정부터 Merkle tree의 cascade 무결성, delta compression과 GC의 균형까지, Git 객체 저장소의 통합 철학을 추적한다.
총 16편 · 순서대로 읽기를 권장
Content-Addressable Storage의 두 가지 결정부터 Merkle tree의 cascade 무결성, delta compression과 GC의 균형까지, Git 객체 저장소의 통합 철학을 추적한다.
로컬 브랜치부터 원격 추적 ref, packed-refs 압축, 특수 참조, detached HEAD까지 — .git 디렉토리 안에서 Git이 현재 위치를 추적하는 방식을 해부한다.
index 바이너리 포맷의 stat 캐시부터 3 Tree 모델, git add의 blob 생성, skip-worktree 플래그, .gitignore 매칭 알고리즘까지 — Git staging area의 설계 철학을 추적한다.
Commit 객체의 불변성 설계부터 Reachability 탐색 알고리즘, commit-graph 캐시까지 — Git이 history를 DAG로 표현하는 이유와 그 귀결을 추적한다.
41바이트 텍스트 파일이 branch의 전부인 이유부터 switch의 3단계 갱신, tracking 설정, 명명 충돌까지 — Git branch 설계 철학을 추적한다.
3-way merge의 결정 트리부터 LCA 알고리즘, ort 전략의 100x 가속, rerere의 자동 해결 재사용까지 — Git이 브랜치를 합치는 원리를 추적한다.
commit immutability의 cascade 구조부터 interactive rebase의 todo 파일, --onto의 세 인자, 충돌 해결 전략까지 — rebase의 내부 동작 원리를 추적한다.
reset, restore, revert, merge revert, 그리고 reflog 만료까지 — Git이 '되돌리기'를 다섯 가지 다른 방식으로 구현하는 이유를 추적한다.
임시 저장처럼 보이는 stash가 사실 multi-parent commit이라는 것부터, refs/stash 스택 구조, cherry-pick과 rebase의 본질적 동등성까지 Git 내부를 추적한다.
Refspec 문법부터 Smart Protocol의 capability negotiation, want/have 협상, force push 안전성, atomic 트랜잭션까지 — git의 원격 동기화 메커니즘 전체를 추적한다.
reflog 파일 구조와 만료 정책부터 fsck 기반 마지막 복구, GC grace period까지 — git 안전망의 전체 설계를 추적한다.
client-side 13종 hook의 실행 시점과 server-side pre-receive/update/post-receive의 stdin 구조부터 Husky + lint-staged 자동화까지, 정책 강제의 다층 방어를 추적한다.
gitlink 객체 구조부터 subtree merge strategy, filter-repo 모노레포 마이그레이션까지, 외부 레포를 통합하는 두 가지 근본적으로 다른 접근을 추적한다.
Pack file의 이진 포맷부터 LFS의 Clean/Smudge 필터, Batch API, Partial Clone의 promisor remote, Sparse Index의 100배 가속까지 — git이 거대 저장소 문제를 해결한 방식을 추적한다.
Centralized에서 Forking까지, Git Flow에서 Trunk-Based까지 — 워크플로우 모델의 본질적 차이를 push 권한과 통합 빈도라는 두 축으로 추적한다.
non-fast-forward부터 permission denied까지, push 거부 메시지별 원인과 안전한 해결 흐름을 추적한다. force push의 함정과 history rewrite 후 협업 프로토콜까지.