development

Git : 두 가지의 가장 최근 공통 조상 찾기

big-blog 2020. 9. 29. 08:04
반응형

Git : 두 가지의 가장 최근 공통 조상 찾기


두 Git 브랜치의 가장 최근 공통 조상을 찾는 방법은 무엇입니까?


을 찾고 있습니다 git merge-base. 용법:

$ git merge-base branch2 branch3
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

git diff master...feature

현재 (아마도 다중 커밋) 기능 브랜치의 모든 새 커밋을 보여줍니다.

man git-diff 다음과 같은 문서 :

git diff A...B

와 같다:

git diff $(git merge-base A B) B

그러나 ...입력하고 기억하기가 더 쉽습니다.

Dave가 언급했듯이 의 특별한 경우는 HEAD생략 할 수 있습니다. 그래서:

git diff master...HEAD

와 같다:

git diff master...

현재 분기가 feature.

마지막으로 순서가 중요하다는 것을 기억하십시오! 이렇게 git diff feature...master에있는 변경 표시됩니다 master켜지지을 feature.

더 많은 git 명령이 해당 구문을 지원하기를 원하지만 지원한다고 생각하지 않습니다. 그리고 일부는 심지어 다른 의미를 가지고 ...: 망할 놈의 "..." ".."트리플 점 두 점 사이의 차이는 범위는 무엇 커밋인가?


이전 답변에서 언급했듯이 git merge-base작동합니다.

$ git merge-base myfeature develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

그러나 myfeature일반적으로 현재 분기 인 경우 다음을 사용할 수 있습니다 --fork-point.

$ git merge-base --fork-point develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

이 인수는 충분히 최신 버전의 git에서만 작동합니다. 그러나 불행히도 항상 작동하는 것은 아니며 이유가 명확하지 않습니다. 이 답변 의 끝 부분에 명시된 제한 사항을 참조하십시오 .


전체 커밋 정보를 보려면 다음을 고려하세요.

$ git log -1 $(git merge-base --fork-point develop) 

함께 gitk사용하면 그래픽으로 두 가지를 볼 수 있습니다

gitk branch1 branch2

그러면 두 가지의 역사에서 공통 조상을 쉽게 찾을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/1549146/git-find-the-most-recent-common-ancestor-of-two-branches

반응형