카테고리 없음
Git : 버그가 발생한 커밋 찾기
SciomageLAB
2024. 10. 3. 16:48
반응형
bisect
이진탐색으로 문제가 생긴 커밋을 찾아주는 명령어이다. 자주 쓰이는 subcommand는 start, bad, good, skip, reset, run이다.
usage: git bisect [help|start|bad|good|new|old|terms|skip|next|reset|visualize|view|replay|log|run]
버그 탐색 절차
start 명령어로 현재 커밋에서 이진 탐색 시작을 한다. git bisect run 명령어로 테스트 케이스 커맨드나 메인 커맨드를 실행시켜서 문제가 없다면 good, 문제가 있다면 bad로 표기를 한다. good과 bad를 반복하면서 문제의 커밋 발생 위치를 찾고 나면 reset으로 이진탐색을 초기화 한다.
git bisect start <range start> <range end>
git bisect run <test-case command>
git bisect good # 또는 bad
git bisect log # log 보기
git bisect reset
예시
git bisect start HEAD HEAD~10
git bisect run ~/test.sh
git bisect reset
blame
문제가 생긴 커밋의 내용에 대해 어떤 라인에서 어느 저자에 의해 문제가 생겼는지 파악하고 싶다면 blame 명령어를 쓰면 된다. -L 뒤에는 코드의 라인 범위가 온다.
# blame example
git blame -L 2,3 main.c
# blame output
285cc560 (jisu choi 2022-02-28 16:52:19 +0900 2)
285cc560 (jisu choi 2022-02-28 16:52:19 +0900 3) int main(void)
285cc560 (jisu choi 2022-02-28 16:52:19 +0900 4) {
285cc560 (jisu choi 2022-02-28 16:52:19 +0900 5) int c = 7;
285cc560 (jisu choi 2022-02-28 16:52:19 +0900 6) }
반응형