2011-04-05 4 views
45

로컬 배포판에 원격 릴리스 리포지토리에 포함되어 있는지 확인하고 싶은 커밋 xyz가 있습니다. 나는 그것을 쉬운 방법으로 할 수 있습니까? 원격 저장소를 복제 할 수는 있지만 더 좋고 빠른 방법을 기대합니다. git ls-remote는 유망 해 보였지만 나에게 가치있는 것을 발견하지 못했습니다. 감사!git : 원격 저장소에 커밋 xyz가 있는지 확인 하시겠습니까?

답변

69

리모트 리포지터리를 참조하는 리모트가 origin이라고 해봅시다.

git fetch origin 

지금 커밋이 들어있는 원격 지점의 어느 알아 git branch에 유용한 --contains 옵션을 사용할 수 있습니다 :이 경우, 첫째로 모든 원격 추적 브랜치를 업데이트

git branch -r --contains xyz 

(-r은 원격 추적 브랜치 만 표시한다는 의미입니다.) 하나 이상의 원격 추적 브랜치에 커밋 xyz이 포함되어 있으면

origin/test-suite 
    origin/HEAD -> origin/master 
    origin/master 
과 같은 출력이 표시됩니다

로컬 저장소에 있지만 원격 추적 분기 중 하나에 포함되어 있지 않으면 출력이 비어 있습니다. 그러나, 전혀, 오류 malformed object name과 사용법을 얻을 것이다 저장소 에 알 수없는 커밋 경우 - ... 당신이 그것을 기대하지 않는 경우, 아마도 약간의 혼란을

+2

처럼 감지 할 수없는 충돌 해상도 또는 과즙으로 rebases 병합 커밋 젠장 배관? –

+1

@dpk : 아마도'git for-each-ref'를 사용하여 원격 추적 분기를 반복하고 'git merge-base '이' '. –

9

마크 말했듯 ,

git branch -a --contains commitish 

그러나 cherry-picked/rebased/merged 버전의 커밋이 포함 된 분기는주의해야합니다.

이 그것이 원격 지점에서의 (a cherrypick으로) 존재하지 않는 경우가 를 저지 나열합니다 편리한

git log --cherry-pick --left-right <commitish> ^remote/branchname 

올 수 있습니다. 방법 --cherry-선택에 대한 설명은 로그에 대한 매뉴얼 페이지를 참조하십시오 식별 상당 물론

이 함께 할 수있는 방법이 있나요/자동이

관련 문제