programing

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

golfzon 2023. 5. 9. 23:26
반응형

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

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

찾고 있습니다. 용도:

$ 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

그러나...더 쉽게 입력하고 기억할 수 있습니다.

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

git diff master...HEAD

다음과 같습니다.

git diff master...

현재 분기가 다음과 같은 경우 충분합니다.feature.

마지막으로, 순서가 중요하다는 것을 기억하세요!하고있다git diff feature...master설정된 변경 내용을 표시합니다.master에 없는feature.

저는 더 많은 git 명령어가 그 구문을 지원하기를 바라지만, 그렇지 않다고 생각합니다.그리고 어떤 것들은 심지어 다른 의미를 가지고 있습니다....Git commit 범위에서 이중""과 삼중 점 "..."의 차이점은 무엇입니까?

이전 답변에서 언급한 바와 같이, 그러나.git merge-base작동하다,

$ git merge-base myfeature develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

한다면myfeature는 현재 분기이며, 일반적으로 다음을 사용할 수 있습니다.

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

이 인수는 충분히 최근 버전의 git에서만 작동합니다.불행하게도 그것이 항상 효과가 있는 것은 아니며, 그 이유는 분명하지 않습니다. 답변의 끝 부분에 명시된 제한 사항을 참고하시기 바랍니다.


전체 커밋 정보는 다음을 고려하십시오.

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

와 함께gitk두 분기를 그래픽으로 볼 수 있습니다.

gitk branch1 branch2

그리고 두 갈래의 역사에서 공통 조상을 찾는 것은 쉽습니다.

모든 분기의 공통 조상 찾기

git merge-base $(git branch --format "%(refname)")
git checkout myRep
git pull origin main --allow-unrelated-histories
git push origin myRep

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

반응형