본문 바로가기

Git & Github

git bisect # 오류 발생 커밋 찾기 # 이진 탐색

728x90
반응형

이진탐색 알고리즘을 이용하여 git에서 특정 커밋을 찾아내는 방법이 있다.

 

git bisect

 

이진탐색 방식을 통해 오류 또는 성능저하를 발생시키는 커밋을 효율적으로 찾아낼 수 있다.

 

편하게 현재 커밋과 특정 커밋을 기준점으로 잡는 방법을 해보자.

 

git 이진탐색 시작

git bisect start

 

위 커맨드를 입력하면 다음과 같이 good, bad commit의 입력을 기다리는 상태라고 안내해준다.

  status: waiting for both good and bad commits

 

* 현재 커밋을 오류가 나고있는 상태의 bad commit으로 설정

git bisect bad

 

입력시 아래와 같이 good commit의 입력을 기다리고 있다고 안내해준다. (bad commit은 알려져있다는 표시도 함께)

  status: waiting for good commit(s), bad commit known

 

* 특정 커밋을 오류가 없는 good commit으로 설정

  커밋 hash 값을 주어 설정

git bisect good c736f0dd48f5c83de6a8ccddafd2452098dad856

 

 입력시 아래와 같이 검사해야할 항목이 얼마나 남았는지 안내해주며 bad와 good의 중간 커밋으로 이동한다.

  이등분: (대략 7 단계) 뒤에 시험할 리비전이 166개 남았습니다

 

 (영어로 안내해주다 한글로 안내해주다 혼자 왔다갔다하네....)

 

해당 커밋에서 문제가 없으면 아래 명령어 입력

git bisect good

 

해당 커밋에서 문제가 있으면 아래 명령어 입력

git bisect bad

 

위와 같은식으로 문제가 있는지 없는지를 입력해주면, 범위를 반씩 좁혀가며 문제가 있는 커밋의 범위를 좁혀간다.

 

오류 커밋을 찾거나 하는 등의 이유로 이진탐색을 멈추려면 아래 명령어 입력

git bisect reset

 

 

참고:

https://git-scm.com/docs/git-bisect

728x90
반응형