본문 바로가기
삵

git bisect run으로 버그 커밋 자동으로 찾기

조회 0 · 댓글 0
주말만기다려주말만기다려작성자2026년 11월 3일

언제부터인가 깨진 테스트가 있는데 어느 커밋에서 들어왔는지 모를 때가 있습니다. 좋았던 커밋과 나빠진 커밋만 알면 git bisect가 그 사이를 이진 탐색으로 좁혀 첫 번째 나쁜 커밋을 찾아줍니다. 커밋 하나하나 체크아웃하며 손으로 확인하는 노가다를 git bisect run 한 줄로 자동화할 수 있습니다.

git bisect start
git bisect bad              # 지금 HEAD는 깨져 있음
git bisect good v1.2        # 멀쩡했던 커밋 지정
git bisect run make test    # 각 단계에서 자동 실행
git bisect reset            # 끝나면 원래 브랜치로 복귀

넘긴 스크립트나 명령을 각 단계에서 실행하고 종료 코드로 좋고 나쁨을 판단합니다. 0이면 good, 1부터 124와 126, 127이면 bad로 봅니다. 그래서 make test처럼 실패 시 0이 아닌 값을 내는 명령을 그대로 넘기면 됩니다. 탐색이 끝나면 첫 번째 나쁜 커밋을 출력해 줍니다.

빌드가 깨져서 아예 테스트를 못 하는 커밋이 끼어 있으면 그 커밋에서 스크립트가 125로 종료하게 만드세요. 125는 git bisect skip과 같은 뜻이라 그 리비전을 건너뜁니다. 128부터 255는 탐색 자체를 중단합니다. ⚠️ 끝나면 git bisect reset으로 원래 브랜치에 돌아오는 것을 잊지 마세요.

🔗 https://git-scm.com/docs/git-bisect

로그인 후 답글을 남길 수 있습니다.