바꾸기 전에 프로젝트를 읽어
git log 와 git diff 가 프로젝트를 읽는 방법이야. 입문자는 보통 '내가 뭘 했는지' 확인용으로 써. 프로는 뭐 하기 전 에 써 — 함수가 마지막에 언제 바뀌었는지 찾기, 누구 코드 건드릴지 파악, 변경 범위 잡기, push 전 가설 검증.
git log 만은 verbose 해. 외워둘 모양들: 컴팩트 제목 git log --oneline, DAG 전체 git log --oneline --graph --decorate --all (이건 alias — 하루에 수십 번 써), patch 인라인 git log -p, 파일 변경 요약 git log --stat. 필터: --author, --since/--until, 메시지에 --grep, diff 내용에 -S (pickaxe — 문자열 추가/제거한 commit 찾기), regex 용 -G.
git diff 는 사람들이 아는 것보다 변종이 많아. git diff 단독은 working tree vs index. git diff --staged 는 index vs HEAD. git diff abc..def 는 commit 간 변경. git diff main..feature 는 feature 가 main 에 비해 가진 것 (그 방향만). git diff --stat 은 파일별 요약. git diff --word-diff 는 단어 단위 강조 — 산문이나 minified CSS 같은 긴 줄에 유용.
영원히 보답하는 power move 두 개: git log -p -- path/to/file 는 그 파일을 건드린 모든 commit 을 diff 와 함께 — regression 추적에 완벽. git log -L :functionName:path/to/file 는 한 함수의 history 만 따라가. 진짜 bug 에 처음 써보면 cheat code 발견한 기분이야.