주어진 커밋을 포함하는 분기를 찾기 위해 git을 어떻게 쿼리 할 수 있습니까? gitk
너무 많지 않은 한 일반적으로 가지를 나열합니다.이 경우 "many (38)"또는 이와 유사한 것이 표시됩니다. 전체 목록 또는 적어도 특정 브랜치에 커밋이 있는지 여부를 알아야합니다.
주어진 커밋을 포함하는 분기를 찾기 위해 git을 어떻게 쿼리 할 수 있습니까? gitk
너무 많지 않은 한 일반적으로 가지를 나열합니다.이 경우 "many (38)"또는 이와 유사한 것이 표시됩니다. 전체 목록 또는 적어도 특정 브랜치에 커밋이 있는지 여부를 알아야합니다.
답변:
로부터 자식 분기 매뉴얼 페이지 :
git branch --contains <commit>
지정된 커밋이 포함 된 분기 만 나열합니다 (지정하지 않은 경우 HEAD). 의미
--list
합니다.
git branch -r --contains <commit>
목록은 원격 지점을 추적 (에서 언급뿐만 아니라 user3941992 의 대답은 "원격 지점에 직접 관계가있는 지역의 지점"입니다 아래 참조).
이 자식 준비 기사를 참조하십시오.
--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>
합니다.)
tests
와 master
- master
따라서 별표 현재 지점입니다.
git cherry
: "git cherry가 커밋 ID (sha1)가 아닌 변경 세트를 비교하기 때문에 git cherry를 사용하여 알아낼 수 있습니다. 로컬로 만든 커밋이 다른 커밋 ID 아래에 <업스트림>으로 적용된 경우. 예를 들어 커밋을 직접 푸시하거나 가져 오는 대신 이메일을 통해 <업스트림> 패치를 제공하는 경우에 발생합니다. " kernel.org/pub/software/scm/git/docs/git-cherry.html
-a
원격 브랜치를 확인 하는 매개 변수를 추가하십시오 .
git cherry
일부 @UpAndAdam 여기에 질문을 : stackoverflow.com/questions/16304574/...는 , 슬프게도, 문제는 (아직) 응답되지 않았습니다.
당신은 실행할 수 있습니다 :
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
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
이것을 한 줄로 얻었습니다
git log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
단지 해달라고 사용을, 범위를 커밋 그래서 :: 같은 범위 git log HEAD --oneline -1
>를 82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.
master
에서는이 목록에 있으면 항상 선호 한다고 말할 수 있습니다 . 거기에서 덜 명확합니다. .gitmodules 파일에서 git branch를 시도하고 읽을 수 git config -f .gitmodules submodule.src/foo/submodule.branch
있습니다. 이것은 오래 지속되는 포크 / 홍보 일 수 있습니다. CD를 루트로 리포 지하여 실행할 수 있습니다 git config submodule.src/foo/submodule.branch
. superprojects 현재 자식 분기를 사용할 수도 있습니다.
git config submodule.src/foo/submodule.branch
의 repo 로컬 .gitconfig 파일을 포함하여 자식 CONFIGS,의 다양한에 의해 영향을받을 수있다. (달리기 필요 git config --local include.path ./path/to/your/.gitconfig
)