Nice programing

주어진 커밋을 포함하는 분기를 나열하는 방법은 무엇입니까?

nicepro 2020. 9. 27. 13:57
반응형

주어진 커밋을 포함하는 분기를 나열하는 방법은 무엇입니까?


주어진 커밋을 포함하는 분기를 찾기 위해 git을 쿼리하려면 어떻게해야합니까? gitk는 일반적으로 브랜치가 너무 많지 않은 경우 목록을 나열합니다.이 경우 "다수 (38)"또는 이와 유사한 것으로 표시됩니다. 전체 목록 또는 적어도 특정 분기에 커밋이 포함되어 있는지 알아야합니다.


로부터 자식 분기 매뉴얼 페이지 :

 git branch --contains <commit>

지정된 커밋을 포함하는 분기 만 나열합니다 (지정되지 않은 경우 HEAD). 를 의미 --list합니다.


 git branch -r --contains <commit>

"원격 분기와 직접 관계가있는 로컬 분기"인 원격 추적 분기나열 합니다 ( 아래 user3941992답변 에서 언급 됨).


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

참고 : 커밋이 원격 추적 분기 에있는 경우 -a옵션을 추가합니다 .
( 아래 MichielB 코멘트로 )

git branch -a --contains <commit>

MatrixFrog정확한 커밋을 포함하는 분기 만 표시 한다고 설명합니다 .
어떤 브랜치가 "동등한"커밋을 포함하는지 알고 싶다면 (즉, 어떤 브랜치가 해당 커밋을 체리 선택했는지) 다음과 git cherry같습니다.

git cherry 커밋 ID (sha1)가 아닌 변경 세트를 비교 하기 때문에 git cherry로컬에서 만든 커밋이 <upstream>다른 커밋 ID 로 적용되었는지 확인하는 데 사용할 수 있습니다 .
예를 들어 <upstream>커밋을 직접 푸시하거나 가져 오는 대신 이메일을 통해 패치 를 제공하는 경우 이러한 상황이 발생합니다 .

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

(여기에서 ' -' 로 표시된 커밋은와 함께 표시 되지 않습니다 git cherry. 이는 이미에 있음을 의미 <upstream>합니다.)


다음을 실행할 수 있습니다.

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

출력의 마지막 커밋 주석에서 원래 브랜치 이름을 찾을 수 있습니다.

예:

       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

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

반응형