소프트웨어 엔지니어로서 git bisect에 대해 알아야 하는 이유
당신이 묻는 git bisect는 무엇입니까?
소프트웨어 엔지니어링 배경을 가지고 있다면 binary search이라는 검색 알고리즘에 대해 들어보셨을 것입니다.
, 이 검색 알고리즘의 핵심은 일련의 숫자에서 유지되는 진행 순서가 있고 특정 항목을 검색하려는 경우 이 반복 접근 방식을 사용하여 각 반복에서 검색 공간을 반으로 줄일 수 있음을 나타냅니다. 예를 들어 , 점 "A"와 또 다른 점 "B"를 알고 있고 이 두 점은 각 반복에서 그 사이에 점진적 시퀀스가 있는 경우 검색 공간을 반으로 줄일 수 있습니다.
이제 git bisect는 이 동일한 알고리즘을 사용하지만 코드베이스에서 엉망인 것을 찾는 데만 사용합니다.
그것은 당신이 전혀 모르는 다른 커밋으로 인해 코드에서 버그에 직면했다고 가정하지만 버그가 거기에 없었다고 확신하고 모든 것이 잘 작동했을 때 커밋을 알고 있을 것입니다. 똥이 진짜가되기 전에?). 이제 어떤 커밋이 팬을 강타했는지 파악해야 합니다. git bisect는 좋은 커밋과 현재 커밋 사이의 이진 검색을 사용하여 이 작업을 수행하고 각 반복에서 시작할 중간 기반을 제공합니다.
우리는 예제를 사용하여 이것을 할 것입니다
이 데모 프로젝트에서는 bisect를 사용할 수 있는 넓은 공간을 보여주기 위해 몇 가지 변경 사항이 포함된 5개의 다른 커밋을 만들었습니다.
git log
commit ec802e7ad3547eab0475a95ea8165ad39a096ed6 (HEAD -> master)
Author: Akashdeep <adeep8961@gmail.com>
Date: Fri Aug 5 00:04:49 2022 +0530
feat: commit 5
commit aef6d0f4f4a8c9404a07fbb07805c14afb1913e4
Author: Akashdeep <adeep8961@gmail.com>
Date: Fri Aug 5 00:04:36 2022 +0530
feat: commit 4
commit 8dae945d335e488f38faa7bb2d32f963897a349c
Author: Akashdeep <adeep8961@gmail.com>
Date: Fri Aug 5 00:04:23 2022 +0530
feat: commit 3
commit 114b05be372ddb6e6674fe3c3270161ef549a4c4
Author: Akashdeep <adeep8961@gmail.com>
Date: Fri Aug 5 00:04:11 2022 +0530
feat: commit 2
commit 53687b93af435041d1f2b1895839564e6c1f97cd
Author: Akashdeep <adeep8961@gmail.com>
Date: Fri Aug 5 00:03:53 2022 +0530
feat: commit 1
commit 7e33d507ce19a4eba677ecadb9f74ea4f3b3d1f6
Author: Akashdeep <adeep8961@gmail.com>
Date: Thu Aug 4 23:58:25 2022 +0530
init: first commit
이 데모에서는 커밋 번호 1이 확실히 안전한 것이라고 가정하므로 커밋 1에 대한 커밋 해시를 복사하십시오.
터미널에서 bisect 세션 표시기를 볼 수 있습니다.
이제 현재 헤드/커밋을 불량으로 표시하겠습니다.
git bisect bad
그런 다음 이전에 복사한 커밋 ID를 첫 번째 이등분을 수행하기 위한 좋은 커밋으로 표시해야 합니다.
git bisect good 53687b93af435041d1f2b1895839564e6c1f97cd
첫 번째 검색 공간을 표시한 후 이분법이 시작됩니다.
이등분 후 git은 테스트할 공간의 정확한 중앙에 있는 커밋으로 자동으로 체크아웃합니다. 이제 이 커밋에 대한 코드를 테스트하고 이것이 여전히 잘못된 커밋이라고 결정한 후 이 커밋을 새로운 잘못된 커밋으로 표시할 수 있습니다. bisect 과정을 계속하십시오.
데모를 위해 이것을 잘못된 커밋으로 표시하겠습니다.
git bisect bad
이제 git은 커밋 2를 확인하고 이것이 작동하는 코드 커밋이라고 결정합니다(마지막 오류가 발생한 위치를 정확히 찾기 위해 이 프로세스를 계속할 수 있습니다).
git bisect good
이제 bisect 세션이 끝난 후 볼 수 있듯이 우리는 모든 기록을 가지고 있으며 커밋에서 코드가 정확히 중단되었습니다.
이제 커밋 3(잘못된 커밋)에 대한 커밋 해시를 복사하고 다음을 사용하여 이 커밋에 대한 변경 사항을 확인할 수 있습니다.
git show 8dae945d335e488f38faa7bb2d32f963897a349c
결정하면 이 변경 사항은 격리되고 간단히 되돌릴 수 있습니다. 이제 먼저 bisect 세션을 종료하고 실행하십시오.
git bisect reset
git revert 8dae945d335e488f38faa7bb2d32f963897a349c
프로덕션 수준의 문제를 성공적으로 디버깅했습니다(예!!!!!).
게시물에 댓글을 달아 더 많은 포인트를 추가하거나 전반적인 품질을 개선하세요.
다른 플랫폼에서도 저를 팔로우하세요.
Reference
이 문제에 관하여(소프트웨어 엔지니어로서 git bisect에 대해 알아야 하는 이유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mr_mornin_star/why-you-should-know-about-git-bisect-as-a-software-engineer-42nc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)