Menu
Coddy logo textTech

Git Bisect

마지막 업데이트

git bisect는 이진 탐색으로 버그를 유발한 커밋을 찾습니다. 정상으로 알려진 커밋과 문제가 있는 것으로 알려진 커밋을 알려주면, 그 중간 커밋을 체크아웃하고, 당신이 good 또는 bad로 표시하면 매번 범위를 절반으로 좁힙니다 - 그래서 수천 개의 커밋 사이에서도 몇 단계 만에 범인을 짚어냅니다.

이 명령들을 터미널 플레이그라운드에서 사용해 보세요 - 브라우저 안의 진짜 셸이며, 설치할 것이 없습니다.

git bisect는 정상 커밋과 문제 커밋 사이에서 히스토리를 이진 탐색하며, 매 단계 의심 구간을 절반으로 줄입니다.

구문

CommandWhat it does
git bisect startbisect 세션을 시작한다
git bisect bad현재 커밋을 문제 있음으로 표시한다
git bisect good <hash>정상으로 알려진 커밋을 표시한다
git bisect good / git bisect bad테스트한 각 커밋을 표시한다
git bisect run ./test.sh자동화: 각 단계를 표시하기 위해 테스트를 실행한다
git bisect resetbisect를 종료하고 브랜치로 돌아간다

실습 예제

어떤 커밋이 빌드를 망가뜨렸는지 찾습니다.

StepCommandResult
1git bisect start탐색을 시작한다
2git bisect bad현재 커밋이 망가져 있다
3git bisect good v1.0이 오래된 태그는 정상이었다
4테스트한 뒤 good/badGit이 커밋을 지목할 때까지 반복한다

git bisect 자주 묻는 질문

git bisect는 무엇을 하나요?
커밋 히스토리를 이진 탐색하여 버그를 유발한 정확한 커밋을 찾습니다. 한 커밋을 good, 다른 커밋을 bad로 표시하면 Git이 테스트할 수 있도록 중간 지점을 반복해서 체크아웃하며, 첫 번째 문제 커밋을 찾아낼 때까지 매번 탐색 범위를 절반으로 줄입니다.
git bisect는 어떻게 사용하나요?
git bisect start를 실행하고, 현재의 망가진 상태를 git bisect bad로, 정상 작동하는 것으로 알려진 커밋을 git bisect good <hash>로 표시합니다. Git이 중간 지점을 체크아웃하면 그것을 테스트하고 git bisect good 또는 git bisect bad를 실행합니다. Git이 첫 번째 문제 커밋을 보고할 때까지 반복한 다음 git bisect reset을 실행합니다.
git bisect를 자동화할 수 있나요?
예. git bisect run <script>는 각 단계에서 스크립트를 실행합니다 - 스크립트는 정상 커밋이면 0, 문제 커밋이면 0이 아닌 값으로 종료해야 합니다(테스트 러너가 잘 맞습니다). 그러면 Git이 각 커밋을 손으로 표시하지 않아도 자동으로 bisect를 수행하고, 마지막에 문제가 된 커밋을 출력합니다.
bisect는 어떻게 끝내나요?
git bisect reset을 실행하여 세션을 종료하고 시작하기 전에 있던 브랜치와 커밋으로 돌아갑니다. 문제 커밋을 찾았든 못 찾았든 이것을 실행하세요 - 임시 bisect 상태를 정리합니다.
이것을 온라인에서 연습할 수 있나요?
예. 터미널 플레이그라운드를 열어 브라우저 안의 진짜 셸에서 git bisect를 실행하세요 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌에서도 히스토리를 단계별로 살펴보는 방법을 다룹니다.
Coddy programming languages illustration

Coddy로 Git 배우기

시작하기