질문 : 주어진 커밋을 포함하는 분기를 나열하는 방법은 무엇입니까?
주어진 커밋을 포함하는 분기를 찾기 위해 git을 쿼리하려면 어떻게해야합니까? gitk
는 일반적으로 브랜치가 너무 많지 않은 경우 목록을 나열합니다.이 경우 "다수 (38)"또는 이와 유사한 것으로 표시됩니다. 전체 목록 또는 적어도 특정 분기에 커밋이 포함되어 있는지 알아야합니다.
답변
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
'개발관련 > Git' 카테고리의 다른 글
GitHub에서 커밋을 제거하는 방법 (0) | 2021.12.04 |
---|---|
git cherry-pick을 중단 하는 방법 (0) | 2021.12.04 |
짧은 Git 버전 해시 가져 오기 (0) | 2021.12.03 |
Git : cannot checkout branch-error : pathspec '…'was not match any file (s) known to git (0) | 2021.12.03 |
GitHub의 이슈 댓글에서 커밋을 참조하는 방법 (0) | 2021.12.03 |