Pickaxe는 공간이 아니라 시간을 가로질러 찾아
Grep은 지금의 작업 트리를 검색하지만 git log -S와 git log -G, 곧 pickaxe flag는 모든 이력을 가로질러 찾아. 어느 commit이 문자열을 넣거나 없앴는지, 파일 위치와 상관없이 답해. '우리 X 기능을 ship한 적 있나?'나 '이 magic 상수가 언제 생겼지?' 같은 질문이 몇 초짜리 query가 돼. Git 이력을 검색할 수 있는 database로 보는 순간 임시 고고학이 크게 줄어.
-S "term"은 term의 개수가 바뀐 commit, 곧 추가하거나 제거한 commit을 찾아. 식별자, 함수 이름, 환경 변수, magic 문자열을 추적하기 좋아. -G "regex"는 변경된 줄 가운데 정규 표현식에 맞는 diff를 찾아 더 넓은 pattern을 다뤄. 둘 다 기본으로 모든 이력을 검색하고 -- <path>로 directory나 파일 범위를 제한할 수 있어.
-p를 더하면 matching commit의 실제 diff가 함께 보여. git log -p -S "OAUTH_ENABLED"는 OAUTH_ENABLED가 codebase에 들어온 commit과 동시에 바뀐 주변 맥락을 보여줘. --all은 현재 branch 밖까지, --source는 각 결과가 어느 ref에서 왔는지 표시해.
git log --grep="auth"는 diff가 아니라 commit message를 검색해. message의 일부를 기억할 때 유용하지. --author="Pippa"와 --since="2026-04-01" --until="2026-05-01"로 author와 날짜도 좁힐 수 있어. pickaxe, grep, author, 날짜를 겹치면 지난 분기에 특정 사람이 특정 식별자를 건드린 commit도 query 하나로 찾을 수 있어.