bestsource

지정된 커밋을 포함하는 브랜치를 나열하려면 어떻게 해야 합니까?

bestsource 2023. 4. 9. 21:47
반응형

지정된 커밋을 포함하는 브랜치를 나열하려면 어떻게 해야 합니까?

git에 문의하여 특정 커밋을 포함하는 브랜치를 확인하려면 어떻게 해야 합니까? gitk브랜치가 너무 많은 경우를 제외하고 보통 브랜치가 표시됩니다.이 경우 브랜치는 "many (38)"이라고 표시됩니다.전체 목록 또는 적어도 특정 지점에 커밋이 포함되어 있는지 알아야 합니다.

git-branch 매뉴얼 페이지에서 다음을 수행합니다.

 git branch --contains <commit>

지정된 커밋을 포함하는 브랜치만 나열합니다(지정되지 않은 경우 HEAD).함축적--list.


 git branch -r --contains <commit>

리모트 트래킹브런치(아래의 유저 3941992의 회답에 기재)도 일람표시합니다.이것은, 「리모트브런치와 직접 관계가 있는 로컬브런치」입니다.


Carl Walsh가 지적와 같이 이는 기본 refspec에만 적용됩니다.

fetch = +refs/heads/*:refs/remotes/origin/*

다른 참조 네임스페이스( 요구, Gerrit 등)를 포함할 필요가 있는 경우는, 그 새로운 refspec을 추가하고, 다시 취득할 필요가 있습니다.

git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
git fetch
git branch -r --contains <commit>

이 git ready 기사도 참조해 주세요.

--contains태그는 특정 커밋이 아직 브랜치에 도입되지 않았는지 여부를 확인합니다.적용했다고 생각되는 패치의 SHA 커밋을 받았거나 메모리 사용량을 75% 절감하는 마음에 드는 오픈 소스 프로젝트에 대한 커밋이 아직 완료되었는지 확인하고 싶을 수도 있습니다.

$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date:   Wed Apr 1 20:38:59 2009 -0400

    Green all around, finally.

$ git branch --contains d590f2
  tests
* master

주의: 커밋원격 추적 브랜치에 있는 경우 옵션을 추가합니다.
(아래 MichielB 코멘트)

git branch -a --contains <commit>

MatrixFrog에서는 커밋을 포함하는 브랜치만 표시된다고 코멘트합니다.
어느 브랜치에 "등가" 커밋이 포함되어 있는지(즉, 어느 브랜치에 해당 커밋이 선택되어 있는지) 알고 싶은 경우는, 다음과 같습니다.

왜냐면git cherry 커밋 ID(sha1)가 아닌 변경 세트를 비교합니다.git cherry로컬에서 한 커밋이 적용되었는지 확인합니다.<upstream>다른 커밋 ID로 설정합니다.
예를 들어 패치를 공급하고 있는 경우 이 문제가 발생합니다.<upstream>커밋을 직접 누르거나 당기는 대신 이메일을 통해 확인할 수 있습니다.

           __*__*__*__*__> <upstream>
          /
fork-point
          \__+__+__-__+__+__-__+__> <head>

(여기서 '라고 표시된 커밋은-와 함께 나타나지 않을 것이다.git cherry(즉, 에 이미 존재합니다).<upstream>.)

실행할 수 있습니다.

git log <SHA1>..HEAD --ancestry-path --merges

출력의 last commit 코멘트로부터 원래의 브랜치명을 찾을 수 있습니다.

예:

       c---e---g--- feature
      /         \
-a---b---d---f---h---j--- master

git log e..master --ancestry-path --merges

commit h
Merge: g f
Author: Eugen Konkov <>
Date:   Sat Oct 1 00:54:18 2016 +0300

    Merge branch 'feature' into master

정답은git branch -r --contains <commit>일반적인 리모트브런치에서는 정상적으로 동작하지만 커밋이 숨김에만 있는 경우headGitHub가 PR용으로 작성하는 네임스페이스는 몇 가지 단계가 더 필요합니다.

를 들어 PR 하고 있는 은 PR #42 뿐입니다.git branch -r #42와 같은 가 있기 때문에 PR #에 알 수 .refs/pull/42/head는 디폴트로 리모트브런치로 표시되지 않습니다.

».git/config★★★★★★★★★★★★★★★★의 경우[remote "origin"]섹션 새 행을 추가합니다.

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

( 요지는 더 많은 맥락을 가지고 있습니다.)

★★★★★★★★★★★★★★★★★★★★.git fetch할 수 PR을 git branch -r --contains <commit> 될 것이다origin/pr/42에 커밋이 포함되어 있습니다.

언급URL : https://stackoverflow.com/questions/1419623/how-to-list-branches-that-contain-a-given-commit

반응형