Bisect: 심각하게 과소평가된 git 명령

2681 단어 bisectvcsgit

자식 양분



커밋을 계속하기 전에 제대로 작동한다고 확신하는 기능을 중단하기 위해 프로젝트에 여러 커밋을 한 상황에 직면한 적이 있습니까?

그런 시나리오에서 어떻게 코드 디버깅을 시작할 계획입니까?

무차별 대입 접근 방식을 사용할 수 있지만 git이 어떤 커밋이 기능을 엉망으로 만들었는지 알려준다면 훨씬 더 쉽지 않을까(디버깅)?
git bisect가 정확히 그렇게 합니다.

아래와 같은 커밋 기록이 있다고 가정합니다.



내 기능이 29aa243에서 제대로 작동했다고 가정해 보겠습니다. 29aa243d3bf6d2 사이의 어떤 커밋이 내 기능을 깨뜨렸는지 찾고 싶습니다.

커밋을 양분하기 전에 관련 명령에 대한 기본적인 이해를 얻습니다.

양분을 시작하려면 다음 명령을 실행합니다.




git bisect start


이렇게 하면 기능을 테스트하고 제대로 작동하는지 또는 여전히 손상되었는지 git에게 알려야 하는 이등분 세션이 시작됩니다.

git bisect good [optional commit] # If the feature works fine
git bisect bad  [optional commit] # If the feature is still broken



이것은 프로세스의 간단한 논리 그래프입니다.



이제 먼저 어떤 커밋이 good이고 어떤 것이 bad인지 초기화해야 합니다. 이 시나리오에서 내 d3bf6d2(현재 HEAD)는 불량이고 29aa243는 양호합니다. 위에 주어진 명령의 도움으로 이것을하십시오



이제 기능을 테스트하고 위에 주어진 논리 그래프를 살펴보십시오. 나중에 모든 것을 수정하는 데 어려움이 있습니다. 이등분 세션을 종료하는 방법에 대해서는 이 문서의 마지막 부분을 참조하십시오.

모든 개정이 끝나면 git은 어떤 커밋이 기능을 손상했는지 알려줍니다.]



이제 당신의 잘못을 발견했으므로 Detached HEADmaster 에 다시 연결할 시간입니다. 분리된 HEAD를 다시 부착하려면 이렇게 하십시오.

git bisect reset


커밋 👍 디버깅에 행운을 빕니다. 다음은 git bisect에 대해 알아볼 수 있는 소스입니다.

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

https://stackoverflow.com/questions/4713088/how-to-use-git-bisect

좋은 웹페이지 즐겨찾기