코드를 실행하는데 예상치 못한 버그가 발생하고, 해당 버그가 오랜 버전 업데이트 과정에서 발견되지 않았었다면 어느 업데이트에서 발생한 오류인지 확인하기가 어려울 것입니다. git은 이에 대해 흥미로운 기능을 제공합니다.
bisect 명령어를 통해 모든 버전을 다 체크하지 않고도 이진탐색으로 오류가 발생한 시점을 찾을 수 있습니다.
이진탐색 시작
git bisect start
탐색 시작 후 현재 커밋은 오류가 발생하는 상태라는것을 알려야 합니다.
git bisect bad
그 다음 오류 발생이 일어났을것으로 예상되는 커밋으로 HEAD를 옮겨줍니다.
git checkout (커밋 해시)
이후로는 해당 커밋이 오류가 발생하는 상태라면 bad, 오류가 발생하지 않는 상태라면 good 으로 표현해 범위를 좁혀 나갈 수 있습니다.
이렇게 모든 커밋 탐색이 완료되면 어느 커밋부터 오류가 발생했는지 확인할 수 있습니다.
이진탐색 종료
git bisect reset
탐색 도중이나 탐색을 완료한 후 reset 명령어를 사용하여 이진탐색을 종료할 수 있습니다.