내가 무엇'm 하려고 하는 버전을 확인합니다. 고 싶을 지키는 코드의 최소 버전입니다. 그래서 내가 필요로하는 방법을 알려면 현재 지점이 포함된다.
거기에 여러 가지 방법으로 이를 달성하기 위해 결과입니다. 첫 순진한 옵션을 사용하는git
로그 검색에 대한 특정 commit 를 사용하여grep
,하지만 항상 정밀
git log | grep <commit_id>
당신은 더 나은 사용하는git 지점
을 직접 찾아 모든 지점이 포함된 주어진COMMIT_ID
사용
git branch --contains $COMMIT_ID
다음 단계에 발견하고 현지 수행 할 수 있습 때문에git1.8.1
사용
git symbolic-ref --short HEAD
와 함께 결합으로
git branch $(git symbolic-ref --short HEAD) --contains $COMMIT_ID
그러나 위의 명령하지 않't true 또는 false 를 반환하고 있는 짧은 버전을 반환하는 종료 코드는 경우 0commit 은 현재의 지점 또는 종료 코드지 않는 경우 1
git merge-base --is-ancestor $COMMIT_ID HEAD
종료 코드가 좋은,하지만 당신이 원하는 문자열의진실
또는false
으로 대답해야 할 추가 좀 더 다음과 결합된면에서
강타를 얻
if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; then echo "true"; else echo "false"; fi
의 목록을 얻을 지점(es)에 포함된 특정한다.
# get all the branches where the commit exists
$ git branch --contains <commit-id>
체크인 경우에는 지점에는 특정한다.
# output the branch-name if the commit exists in that branch
$ git branch --contains <commit-id> | grep <branch-name>
검색점(말하는기
)은정확하게 일치하는.
$ git branch --contains <commit-id> | grep -E '(^|\s)feature$'
예이 있는 경우 3 지역이라는 기능
,feature1
,feature2
다음
$ git branch --contains <commit-id> | grep 'feature'
# output
feature
feature1
feature2
$ git branch --contains <commit-id> | grep -E '(^|\s)feature$'
# output
feature
을 검색할 수도 있습니다 모두에서지역
및원격
가지(사용하는-
)또는원격
가지(사용하여r
).
# search in both 'local' & 'remote' branches
$ git branch -a --contains <commit-id> | grep -E '(^|\s)feature$'
# search in 'remote' branches
$ git branch -r --contains <commit-id> | grep -E '(^|\s)feature$'
추출한 코멘트@torek 으로 대답:
보안 중복을 찾는 방법에 대해 모든 지점이 포함된 지정한다.
을 찾는 경우전류지점이 포함되 commit C 를 사용,"관"명령git merge-염--은 조상
. 현재의 지점이 포함되 C 는 경우 C 조상의 머리,그래서:
if git merge-base --is-ancestor $hash HEAD; then
echo I contain commit $hash
else
echo I do not contain commit $hash
fi
(측면을 참고:쉘 스크립트는 명령이 종료 zero"true"는 동안 하나는 이탈이 아닌 것"false".)
그래 또 다른 대안:
git rev-list<지점 이름>|grep`git rev-parse<commit>`
이 작품은 나를 위해 최선을 것이기 때문에 또한 작업 로컬 캐시 원점과 같은리모컨/원산지/master
,에는git 지점--담
지't work.
이상 OP's 에 대한 질문에 그"현재의점"그러나 나는 그것을 찾을 벙어리를 물어"어떤 지점"버전의 이 질문에 그래서 나는 결정하기 어쨌든.
이 질문에는 몇 가지 좋은 scripty 답변,나는'm 추가 즐겨찾기.
이 하나 보여줄 것입을 위해,당신의 마지막$
n 커밋에서`$br 는 지점이 포함되어 각각:
br=mybranch
n=10
git log --oneline -n$n $br | awk '{print; system("git branch --contains "$1)}'
이것은 비슷하지만 않는 동일한 지점 목록:
br="mybranch yourbranch herbranch"
n=4
for br in $brs; do git log --oneline -n$n $br | awk '{print; system("git branch --contains "$1)}'; done