Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- useEffect
- Windows
- maven
- IntelliJ
- docker
- Linux
- database
- log4j2
- springboot
- sapfiorielements
- SAP
- gson
- Java
- Git
- JavaScript
- gradle
- tibero
- MySQL
- react
- JPA
- VSCode
- BPMN
- dbeaver
- Kubernetes
- nginx
- mybatis
- nodejs
- Spring
- NCP
- LOG4J
Archives
- Today
- Total
두 손끝의 창조자
Git으로 빌드 실패 커밋 찾기 본문
빌드가 갑자기 실패했을 때, 어떤 커밋에서 문제가 생겼는지 찾아야 한다. Git은 이런 상황을 위해 두 가지 효과적인 방법을 제공한다.
방법 1: git rebase --exec
사용법
git rebase [commitid] --exec './gradlew build'
지정한 커밋부터 현재까지 모든 커밋을 순차적으로 실행하면서 빌드를 테스트한다.
절차
- 기준 커밋부터 최신 커밋까지 하나씩 rebase 수행
- 각 커밋마다 빌드 실행
- 실패 시 git show로 해당 커밋 변경사항 확인
- 문제 커밋 파악 후 git rebase --abort로 중단
장단점
- 장점: 정확한 실패 지점 파악 가능
- 단점: 커밋 수가 많으면 시간 소요
방법 2: git bisect
사용법
git bisect start
git bisect bad # 현재 상태(문제 있음)
git bisect good [commitid] # 정상 동작 커밋
이진 탐색으로 문제 커밋을 빠르게 찾는다.
절차
- git bisect start로 시작
- 현재 상태를 bad로 지정
- 정상 동작하던 과거 커밋을 good으로 지정
- Git이 자동으로 중간 지점 체크아웃
- 테스트 후 good 또는 bad 반복
- 문제 커밋 자동 도출
자동화
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 기준이 명확한 프로젝트에 적합
핵심 포인트
- 전략적 선택: 커밋 수에 따라 방법 선택
- 자동화 고려: CI/CD 환경에서 git bisect run 활용
- 명확한 기준: 빌드 성공/실패 판단 기준 설정 필요
빌드 실패 디버깅은 더 이상 수동으로 하나씩 확인할 필요가 없다. Git의 내장 도구를 활용하면 효율적으로 문제를 해결할 수 있다.
반응형
Comments