Bisect

고급 Git

Amanda Crawford-Adamo

Software and Data Engineer

git bisect란?

버그를 도입한 커밋을 이진 탐색으로 찾는 도구

Git Bisect 명령어

git bisect

목적

  1. 불량 커밋을 빠르게 식별
  2. 데이터 디버깅에 필수
  3. 근본 원인 분석 가속
고급 Git

Bisect - 시작

  1. git bisect 세션 시작

    git bisect start
    
  2. 현재 상태를 불량으로 표시

    git bisect bad
    
  3. 마지막으로 정상인 커밋을 지정

    git bisect good <commit-hash>
    

커밋 그래프: 처음 두 커밋은 녹색(좋은 커밋), 마지막 커밋은 빨간색(불량 커밋). 사이의 세 커밋은 회색(미확정). 마지막 정상 커밋은 git bisect good, 불량 커밋은 git bisect bad로 표시됩니다.

고급 Git

Bisect - 검색

  1. 현재 커밋을 불량으로 표시

    git bisect bad
    
  2. 현재 커밋을 정상으로 표시

    git bisect good
    

커밋 그래프: 처음 두 커밋은 녹색(좋은 커밋), 마지막 커밋은 빨간색(불량 커밋)으로 표시. 그 사이의 세 커밋은 회색(미확정). Git bisect는 이진 탐색으로 가운데 커밋부터 검사하며 이후 좌우로 이동합니다.

고급 Git

Bisect - 자동 검색

자동화된 테스트 스크립트를 실행해 커밋이 정상인지 불량인지 확인합니다.

git bisect run <script_name>
  • 테스트가 통과하면 스크립트는 0을 반환해야 합니다.
  • 실패하면 0이 아닌 값을 반환해야 합니다.

커밋 그래프: 처음 두 커밋은 녹색(좋은 커밋), 마지막 커밋은 빨간색(불량 커밋)으로 표시. 그 사이의 세 커밋은 회색(미확정). Git bisect는 이들 사이에서 이진 탐색으로 가운데 커밋부터 검사하며, 이후 좌우로 이동합니다.

고급 Git

Bisect - 결과

Git Bisect 출력 예시

$ git log
b1a534f is the first bad commit
commit b1a534f89l2c3d4e5f6g7h8i9j0k1l2m3n4o5p
Author: Jane Doe <[email protected]>
Date:   Thu Mar 14 14:30:00 2024 -0500

Update data transformation logic

git bisect 과정을 종료하고 현재 HEAD로 돌아갑니다

git bisect reset
고급 Git

git bisect를 사용할 때

사용 사례

  1. 데이터 워크플로의 회귀 찾기
  2. 테스트 스크립트로 디버깅 가속

  • git bisect run <test-script>로 테스트 자동화
  • 이해하기 쉬운 커밋 메시지 사용
고급 Git

연습해 봅시다!

고급 Git

Preparing Video For Download...