0Pricing
Git & GitHub Professional Workflow · 강의

디버깅을 위한 Git Bisect

`git bisect`를 활용하여 버그를 도입한 특정 커밋을 효율적으로 찾아 디버깅 시간을 절약하세요.

디버깅을 위한 Git Bisect은(는) CoddyKit의 무료 Git & GitHub Professional Workflow 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Git & GitHub Professional Workflow 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Git & GitHub Professional Workflow 강의에는 총 4개의 강의가 포함되어 있습니다.

Git으로 버그를 더 빠르게 찾기

디버깅은 어려울 수 있습니다. 버그가 나타났지만 어떤 변경 사항 때문에 발생했는지 모르는 경우가 있습니다.

git bisect는 버그를 도입한 정확한 커밋을 찾아내는 데 도움을 주는 강력한 Git 명령입니다. 이진 검색 알고리즘을 사용해 수천 개의 커밋 범위를 빠르게 좁혀 갑니다.

이진 검색의 강력함

프로젝트에 100개의 커밋이 있고 첫 번째 커밋과 마지막 커밋 사이 어딘가에서 버그가 발생했다고 가정해 보겠습니다. 각각을 일일이 확인하면 느릴 수밖에 없습니다!

git bisect는 "숫자 맞히기" 게임처럼 작동합니다.

  • 버그가 없었던 "양호한" 커밋을 Git에 알려 줍니다.
  • 버그가 있는 "불량" 커밋을 Git에 알려 줍니다.
  • Git이 대략 중간에 있는 커밋을 선택하고 테스트해 보도록 요청합니다.
  • 해당 커밋을 "양호" 또는 "불량"으로 표시하면 Git이 검색 범위를 절반으로 줄입니다.

검색 시작하기

시작하려면 Git에 이분 탐색 세션을 시작한다고 알려야 합니다. 다음 명령으로 절차를 초기화합니다.

git bisect start

시작한 후에는 알려진 "불량" 커밋(버그가 존재하는 커밋)과 알려진 "양호" 커밋(버그가 확실히 존재하지 않는 커밋)을 지정합니다.

대개 "불량" 커밋은 현재 HEAD이고, "양호" 커밋은 이전 릴리스 태그나 며칠 전의 커밋일 수 있습니다.

커밋 경계 표시하기

git bisect를 시작했으면 검색 범위를 정합니다.

  • 불량 커밋: 버그가 존재한다는 것을 알고 있는 커밋입니다. git bisect bad <commit-hash>를 사용하거나 현재 HEAD라면 간단히 git bisect bad를 사용합니다.
  • 양호한 커밋: 버그가 존재하지 않는다는 것을 알고 있는 커밋입니다. git bisect good <commit-hash>를 사용합니다.

그러면 Git이 이 범위의 중간에 있는 커밋을 자동으로 체크아웃합니다.

테스트하며 범위 좁히기

양호한 커밋과 불량 커밋을 표시하면 Git이 범위 중간의 커밋을 자동으로 체크아웃합니다. 이제 체크아웃된 커밋의 코드를 테스트해야 합니다.

  • 버그가 IS 존재하면 git bisect bad를 입력합니다.
  • 버그가 IS NOT 존재하면 git bisect good을 입력합니다.

그러면 Git이 남은 범위에서 다시 중간 커밋을 선택합니다. Git이 최초의 "불량" 커밋을 찾을 때까지 이 과정을 반복합니다.

버그가 도입된 과정 시뮬레이션하기

스크립트에 간단한 "버그"가 있다고 가정해 보겠습니다. 작은 오류가 도입된 프로젝트 이력을 시뮬레이션해 보겠습니다.

다음은 처음의 "양호한" 스크립트입니다.

main.sh

#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
  sum=$((sum + i))
done
echo "Sum is: $sum"

수동 이분 탐색 따라 하기

이제 이후 커밋에서 실수로 반복문을 seq 1 4로 변경해 합계가 잘못 계산되었다고 가정해 보겠습니다(6이 아닌 10).

먼저 다음을 실행합니다.

git bisect start

그런 다음 버그가 존재하는 현재 HEAD를 불량으로 표시합니다.

git bisect bad HEAD

그리고 정상적으로 작동한다는 것을 알고 있는 이전 커밋을 양호한 커밋으로 표시합니다.

git bisect good <old_good_commit_hash>

그러면 Git이 커밋을 체크아웃하며 안내합니다. ./main.sh를 실행해 합계가 6인지 10인지 확인한 다음, 그 결과에 따라 git bisect good 또는 git bisect bad를 입력합니다.

디버깅 절차 자동화하기

테스트가 복잡하다면 각 커밋을 수동으로 테스트하는 데 여전히 시간이 많이 걸릴 수 있습니다. git bisect run을 사용하면 이 작업을 자동화할 수 있습니다!

다음 종료 상태로 끝나는 스크립트를 제공하면 됩니다.

  • 커밋이 양호하면 0(0)
  • 커밋을 건너뛰어야 하면 125
  • 커밋이 불량하면 그 외의 0이 아닌 값(예: 1)

Git은 버그를 찾을 때까지 각 테스트 대상 커밋에서 이 스크립트를 실행합니다.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

검색 마무리하기

git bisect가 최초의 불량 커밋을 성공적으로 식별하면 커밋 해시와 커밋 메시지를 알려 줍니다.

원인을 찾고 문제를 이해한 후에는 이분 탐색을 시작하기 전의 원래 상태로 저장소를 되돌리는 것이 중요합니다.

git bisect reset

이 명령은 이분 탐색을 시작했을 때 작업 중이던 커밋으로 돌아가 임시 이분 탐색 상태를 정리합니다.

이분 탐색 이해도 확인

방금 git bisect start를 실행하고 현재 HEAD를 불량으로, 이전 커밋을 양호한 커밋으로 표시했습니다. Git이 중간 커밋을 체크아웃합니다.

테스트를 실행했는데 이 중간 커밋에 버그가 IS PRESENT합니다.

`git bisect` 요약

축하합니다! 이제 git bisect를 사용하는 방법을 배웠습니다.

  • 버그를 도입한 정확한 커밋을 찾는 강력한 도구입니다.
  • 효율적인 검색을 위해 이진 검색을 사용합니다.
  • "양호"(버그 없음) 커밋과 "불량"(버그 있음) 커밋을 지정합니다.
  • git bisect run <script>로 테스트 절차를 자동화할 수 있습니다.
  • 검색이 끝난 후에는 항상 git bisect reset을 실행해 정리해야 합니다!

자주 묻는 질문

“디버깅을 위한 Git Bisect” 강의는 무료인가요?

네 — “디버깅을 위한 Git Bisect” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Git & GitHub Professional Workflow 강의 전체를 잠금 해제할 수 있습니다. Git & GitHub Professional Workflow 강의에는 총 4개의 강의가 포함되어 있습니다.

“디버깅을 위한 Git Bisect”에서 뭘 배우나요?

`git bisect`를 활용하여 버그를 도입한 특정 커밋을 효율적으로 찾아 디버깅 시간을 절약하세요. 브라우저에서 직접 실행하는 실습 코드로 Git & GitHub Professional Workflow을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Git & GitHub Professional Workflow을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Git & GitHub Professional Workflow은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“디버깅을 위한 Git Bisect” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Git & GitHub Professional Workflow 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Git & GitHub Professional Workflow 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Git Reflog 및 기록 복구
  2. 디버깅을 위한 Git Bisect
  3. 저장소 유지 관리 및 정리
  4. git filter-repo로 기록 다시 작성하기
← Git & GitHub Professional Workflow(으)로 돌아가기