Git bisect

배추·2025년 4월 6일
0

생활코딩-Git

목록 보기
4/6

git의 bisect에 대해 알아봅니다.


▶bisect란

  • 코딩을 하다보면 버그가 발생한지 모르고 후속 커밋을 하는 경우가 있습니다.
  • 나중에 버그를 발견했을 때 이 버그가 어떤 버전에서 시작된 것인지를 탐색해야 하는 경우가 있습니다.
  • 역순으로 checkout 하는 것은 버전이 많은 경우에 많은 시간이 필요.
  • 버그를 찾을 때 binary search를 이용해서 더 빠르게 탐색할 수 있는 기능이 bisect다.

  • 처음부터 끝까지 하나씩 순서대로 비교하면서 찾음.
  • 정렬이 필요 없음. 정렬이 안 된 데이터에도 사용 가능.
  • 구현이 간단.
  • 데이터가 많아질수록 속도가 느림.
  • 리스트의 가운데 값을 확인하고, 찾고자 하는 값이 왼쪽/오른쪽 중 어디에 있는지 판단하여 반씩 줄여가며 탐색.
  • 데이터가 정렬되어 있어야 함. 정렬된 데이터에만 사용 가능.
  • 탐색 속도가 매우 빠름.


🌟bisect 사용하기

  • git bisect start: git의 bisect 기능 시작.
  • 현재 머물고 있는 버전에 git bisect bad: 현재 커밋에 버그가 있음을 표시.
    • git log에서 현재 머물고 있는 버전에 'bisect/bad'라는 특수 마킹이 추가된 것을 볼 수 있음.
  • git checkout 오류가있을것으로의심되는commitid: 해당 커밋으로 HEAD를 이동시킴. working directory는 해당 커밋 시점 상태로 바뀜.
  • 이동된 커밋에서 git bisect good: 현재 커밋에 버그가 없음을 표시.
  • git이 자동으로 중간 커밋으로 이동함.
  • 이동된 커밋에서 버그가 있으면 git bisect bad, 없으면 git bisect good
  • 이 과정을 반복하면서 버그가 생긴 시점을 좁혀감.
  • 버그가 생긴 커밋을 찾으면 git bisect reset: 출발했던 원래 커밋으로 돌아오고, bisect 과정 중 생긴 마킹들은 삭제.
profile
난 🥬

0개의 댓글