외부에서 git 저장소의 최신 SHA를 얻는 방법을 아는 사람이 있습니까? 나는 자식 저장소 안에 아니다, 그러나원격 자식 저장소에서 최신 커밋의 SHA를 얻는 방법?
git log origin/branch_X | head -1
을, 난 그냥 최신 SHA를 얻을 수 clone
에 저장소를 피하기 위해 싶습니다 : 당신이 자식 저장소 안에있는 경우
을 수행 할 수 있습니다 태그/분기의. 이 일을하는 영리한 방법이 있습니까?
외부에서 git 저장소의 최신 SHA를 얻는 방법을 아는 사람이 있습니까? 나는 자식 저장소 안에 아니다, 그러나원격 자식 저장소에서 최신 커밋의 SHA를 얻는 방법?
git log origin/branch_X | head -1
을, 난 그냥 최신 SHA를 얻을 수 clone
에 저장소를 피하기 위해 싶습니다 : 당신이 자식 저장소 안에있는 경우
을 수행 할 수 있습니다 태그/분기의. 이 일을하는 영리한 방법이 있습니까?
후 your answer는 올바른 : 그러나
$ git ls-remote <URL>
같은 파일 시스템 간단한 해결책 (에서 SHA-1을 추출 할 필요가없는에있는 경우 출력은) 단순히 다음과 같습니다
$ git --git-dir=/path/to/repo/.git rev-parse origin/branch_X
가 '--git-dir
'옵션의 설명 git(1) 맨 페이지를 참조하십시오. 방금 SHA-1 지역의 repo의 현재 체크 아웃 지점에서, 당신은 단지 대신 기원의 머리를 지정할 수 있습니다 원하는 경우
는 내 동료는 나를 위해이 대답 지사 머리에
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>
스티브
이 아닌 "git rev-parse origin/branch_X"또는 "git rev-parse refs/remotes/origin/branch_X"입니다. 이 질문에 대한 답변으로 업그레이드해야합니다. – Abhijeet
참조는 .git/refs/
트리에 저장됩니다. 따라서 최신 커밋의 해시를 찾을 수 있어야합니다.
cat .git/refs/remotes/origin/branch_X
경로가 약간 다를 수 있습니다. 원격 저장소에 주어진 지점의 SHA-1을 확인하려면
당신이 심판을 포장 한 경우 그건 작동하지 않을 것입니다. 그런 다음 .git/packed-refs를 살펴 봐야합니다. –
사실,이 솔루션은 향후 Git on-disk 리포지토리 형식이 변경 될 수 있습니다. –
/branch_X :
git --git-dir=/path/to/repo/.git rev-parse --verify HEAD
이 트릭을 할해야 git ls-remote REMOTE | awk "/BRANCH/ {print \$1}"
REMOTE를 원격 저장소의 이름으로 바꾸고 BRANCH를 분기 이름으로 바꾸십시오.이 최고의해야 위의 설명에서 언급 한 바와 같이
$ git --git-dir=/path/to/repo/.git rev-parse origin/<targeted-banch>
사용 rev-parse
git rev-parse origin/master # to get the latest commit on the remote
git rev-parse HEAD # to get the latest commit on the local
+1 추가와 함께 가장 유용함이 입증되었습니다. | clip을 사용하여 sha를 클립 보드 (윈도우)에 놓습니다. –
그리고 그 맥 사용자들에게는'git rev-parse origin/master | pbcopy'는 클립 보드에 커밋 sha ('\ n')를 넣어서 편리하게 붙여 넣을 것입니다. – Aaron
'git rev-parse HEAD'는 로컬 복사본의 최신 커밋을 반환하고, 'git rev-parse origin/master'는 원격 커밋을 반환합니다. 첫 번째 명령을 제거해야하는 경우에도 이것이 가장 좋아하는 대답입니다. 감사합니다 @fedelibre. – fedelibre
:
$ git ls-remote <URL> | head -1 | sed "s/HEAD//"
접근 시스템의 디렉토리를 사용 : 자식 URL을 사용하여
이것은 분기 된 저장소의 업스트림 리모트에서 커밋을 얻는 데 도움이되는 유일한 옵션입니다. – Jalakoo
는 난 단지 특정 지점에 관련된 가져 오는 정보를 추천하고 최신 샤를 얻기 위해 분석 : git ls-remote <url> --tags <branch_name> | awk '{print $1;}'
을 Heres 저장소 내에서 작동하는 복사 - 붙여 넣기 솔루션입니다.
origin_head=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1)
if [ $origin_head != "$(git rev-parse HEAD)" ]; then
echo >&2 "HEAD and origin/master differ."
exit 1
fi
'grep "refs/heads/master $"'를 사용하면 누군가가 마스터가 아닌 다른 브랜치를 요구할 수도 있고 master2 브랜치를 사용하는 것이 중단 될 수도 있습니다. – kitingChris
쿼리 할 리포지토리에 대한 파일 시스템 액세스 권한이 있습니까? –
올바른 방법은 git-log –