stamper
Gitbisect디버깅트러블슈팅

버그를 도입한 커밋 찾기 (git bisect)

개발자김철수22시간 전조회 1추천 0
변수 입력3

언제 사용하나

어느 시점부터 버그가 생겼는지 모를 때, 이분 탐색으로 원인 커밋을 찾을 때.

실행 전 확인

  • 버그를 판정할 명확한 기준(테스트/재현 절차)을 정한다.
  • 정상이었던 과거 커밋(good)과 문제 있는 현재 커밋(bad)을 안다.

명령

# 1) 이분 탐색 시작
git bisect start
git bisect bad {{BAD}}       # 문제 있는 커밋(보통 HEAD)
git bisect good {{GOOD}}     # 정상이던 과거 커밋

# 2) git이 중간 커밋으로 체크아웃해 주면, 매번 검사 후 표시
#    (수동) 재현 확인 후:
git bisect good              # 이 커밋은 정상
git bisect bad               # 이 커밋은 버그 있음

# 3) 자동화: 종료코드 0=정상, 1=버그인 스크립트로
git bisect run {{TEST_CMD}}

# 4) 끝나면 원래 브랜치로 복귀
git bisect reset

placeholder 설명

  • {{GOOD}} / {{BAD}} : 정상/문제 커밋
  • {{TEST_CMD}} : 자동 판정 명령(예: npm test -- pricing)

입력 예시

git bisect run npm test -- pricing

기대 결과

버그를 처음 도입한 정확한 커밋을 알려준다.

검증 방법

지목된 커밋을 git show로 열어 원인이 맞는지 확인한다.

주의사항과 흔한 실수

  • 판정 기준이 불안정(플레이키)하면 엉뚱한 커밋을 지목한다.
  • 끝나면 반드시 git bisect reset으로 복귀한다.

관련 문서

댓글 0

아직 댓글이 없습니다.