두 손끝의 창조자

Git으로 빌드 실패 커밋 찾기 본문

git

Git으로 빌드 실패 커밋 찾기

codinglog 2025. 7. 11. 08:24

빌드가 갑자기 실패했을 때, 어떤 커밋에서 문제가 생겼는지 찾아야 한다. Git은 이런 상황을 위해 두 가지 효과적인 방법을 제공한다.

방법 1: git rebase --exec

사용법

git rebase [commitid] --exec './gradlew build'

지정한 커밋부터 현재까지 모든 커밋을 순차적으로 실행하면서 빌드를 테스트한다.

절차

  1. 기준 커밋부터 최신 커밋까지 하나씩 rebase 수행
  2. 각 커밋마다 빌드 실행
  3. 실패 시 git show로 해당 커밋 변경사항 확인
  4. 문제 커밋 파악 후 git rebase --abort로 중단

장단점

  • 장점: 정확한 실패 지점 파악 가능
  • 단점: 커밋 수가 많으면 시간 소요

방법 2: git bisect

사용법

git bisect start
git bisect bad           # 현재 상태(문제 있음)
git bisect good [commitid]  # 정상 동작 커밋

이진 탐색으로 문제 커밋을 빠르게 찾는다.

절차

  1. git bisect start로 시작
  2. 현재 상태를 bad로 지정
  3. 정상 동작하던 과거 커밋을 good으로 지정
  4. Git이 자동으로 중간 지점 체크아웃
  5. 테스트 후 good 또는 bad 반복
  6. 문제 커밋 자동 도출

자동화

git bisect start
git bisect bad
git bisect good v1.0
git bisect run ./gradlew build

장단점

  • 장점: 대량 커밋에 대해 빠르고 효율적
  • 단점: 빌드 성공/실패 기준이 명확해야 함

언제 무엇을 사용할까

커밋 수가 적을 때 (10개 이하)

git rebase --exec 사용

  • 직관적이고 즉시 코드 비교 가능

커밋 수가 많을 때

git bisect 사용

  • 이진 탐색으로 빠른 탐색

실무 적용

CI/CD 파이프라인

# 자동화 스크립트 예시
git bisect run ./scripts/ci-test.sh

대규모 프로젝트

  • 모노레포 환경에서 git bisect 자동화 도입
  • QA 기준이 명확한 프로젝트에 적합

핵심 포인트

  1. 전략적 선택: 커밋 수에 따라 방법 선택
  2. 자동화 고려: CI/CD 환경에서 git bisect run 활용
  3. 명확한 기준: 빌드 성공/실패 판단 기준 설정 필요

빌드 실패 디버깅은 더 이상 수동으로 하나씩 확인할 필요가 없다. Git의 내장 도구를 활용하면 효율적으로 문제를 해결할 수 있다.

반응형
Comments