개발관련/Git

주어진 커밋을 포함하는 분기를 나열하는 방법

Rateye 2021. 12. 4. 12:39
728x90
반응형
질문 : 주어진 커밋을 포함하는 분기를 나열하는 방법은 무엇입니까?

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

답변

git-branch 매뉴얼 페이지에서 :

 git branch --contains <commit>

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


 git branch -r --contains <commit>

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

Carl Walsh가 언급했듯이 이것은 기본 refspec 에만 적용됩니다.

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

다른 ref 네임 스페이스 ( pull request , 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

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

git branch -a --contains <commit>

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

때문에 git cherry (가) 아이디 (SHA1)을 투입보다는 변경 집합을 비교, 당신이 사용할 수있는 git cherry A는 로컬 적용된 만든 커밋 여부를 확인하기 위해 <upstream> 다른 아래에 ID를 커밋합니다.
예를 들어, 커밋을 직접 푸시하거나 가져 오는 대신 이메일을 통해 <upstream> 패치를 제공하는 경우 이러한 상황이 발생합니다.

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

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

출처 : https://stackoverflow.com/questions/1419623/how-to-list-branches-that-contain-a-given-commit
728x90
반응형