bisect — history 통과 binary search
버그 있어. 버전 1.4 에서 작동하고 2.0 에서 망가져. 사이 200 commit 어딘가에 regression 살아. 수동 검색은 비참. git bisect 가 그 범위 자동 binary-search 의 이름 있는 레시피: Git 이 절반 commit checkout, 너가 good / bad 말함, Git 이 반으로 좁힘, 반복. log₂(200) 은 약 7 — test 7 번이면 정확한 범인 commit 찾음.
동작 단순. git bisect start, 망가진 commit (또는 지금 git bisect bad HEAD) 에 git bisect bad, 알려진-좋은 commit 에 git bisect good v1.4. Git 이 중간점 checkout. 빌드, 테스트, 결정, git bisect good 또는 git bisect bad. Git 이 다음 중간점 checkout. Git 이 첫 안 좋은 commit 발표할 때까지 반복. git bisect reset 으로 원래 branch 복귀.
자동화 업그레이드: git bisect run <script>. 'good' 에 exit 0, 'bad' 에 non-zero 인 스크립트 제공 — 보통 test 명령, 또는 grep -q "expected output" log.txt 같은 한 줄 체크. Git 이 각 중간점에 자동 실행, 사람 없이. v1.4 와 HEAD 사이 20 commit 은 초 단위. 느린 빌드의 수백 commit 은 시간 단위, 하지만 그 동안 너는 아무것도 안 해.
실전 세련화 둘. 흥미롭지 않은 commit 건너뛰기 — 특정 checkpoint 가 테스트 불가일 때 (broken build, missing dep 등) git bisect skip, Git 이 다른 후보 시도. Bisect 로그 저장 — git bisect log > my-bisect.log 후 나중에 git bisect replay my-bisect.log 로 replay (포기 후 재개 필요할 때). Bisect run 은 branch 와 간섭 안 하는 작은 side-state.