원격 git 저장소에서 최신 커밋의 SHA를 얻는 방법은 무엇입니까?
누구든지 git 저장소 외부에서 특정 분기의 최신 SHA를 얻는 방법을 알고 있습니까?
git 저장소에있는 경우 다음을 수행 할 수 있습니다.
git log origin/branch_X | head -1
그러나 나는 git 저장소 내부에 있지 않으며 clone
태그 / 분기의 최신 SHA를 얻기 위해 저장소가 필요하지 않도록하고 싶습니다 . 이 작업을 수행하는 영리한 방법이 있습니까?
원격 저장소에서 지정된 분기의 SHA-1을 확인하려면 정답 이 맞습니다.
$ git ls-remote <URL>
그러나 동일한 파일 시스템을 사용하는 경우 더 간단한 솔루션 (출력에서 SHA-1을 추출 할 필요가 없음)은 다음과 같습니다.
$ git --git-dir=/path/to/repo/.git rev-parse origin/branch_X
' '옵션에 대한 설명은 git (1) 맨 페이지를 참조하십시오 --git-dir
.
사용 REV-구문 분석
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
제 동료가 대답했습니다.
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>
-스티브
git URL 사용 :
$ git ls-remote <URL> | head -1 | sed "s/HEAD//"
액세스 가능한 시스템에서 디렉토리 사용 :
$ git --git-dir=/path/to/repo/.git rev-parse origin/<targeted-banch>
이것은 트릭을 할 것입니다 git ls-remote REMOTE | awk "/BRANCH/ {print \$1}"
REMOTE를 원격 저장소의 이름으로 바꾸고 BRANCH를 브랜치의 이름으로 바꿉니다.
위의 의견에서 언급했듯이 이것이 최상의 솔루션입니다.
$ git ls-remote <URL> | head -1 | cut -f 1
로컬 리포지토리의 현재 체크 아웃 된 브랜치에서 SHA-1 만 원하는 경우 origin / branch_X 대신 HEAD를 지정할 수 있습니다.
git --git-dir=/path/to/repo/.git rev-parse --verify HEAD
분기 헤드에 대한 참조는 .git/refs/
트리에 저장됩니다 . 따라서 다음에서 최신 커밋의 해시를 찾을 수 있습니다.
cat .git/refs/remotes/origin/branch_X
경로는 약간 다를 수 있습니다.
여기 저장소 내에서 작동하는 복사-붙여 넣기 솔루션이 있습니다.
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
특정 분기와 관련된 정보 만 가져온 다음 구문 분석하여 최신 sha를 가져 오는 것이 좋습니다.
git ls-remote <url> --tags <branch_name> | awk '{print $1;}'
'programing' 카테고리의 다른 글
Ruby 배열의 홀수 (또는 짝수) 항목 (0) | 2021.01.16 |
---|---|
Android에서 라디오 버튼을 설정하는 방법 (0) | 2021.01.16 |
자체 버그 추적 시스템을 구축하지 않는 이유 (0) | 2021.01.16 |
div 요소를 편집 가능하게 만들려면 어떻게해야합니까 (클릭 할 때 텍스트 영역처럼)? (0) | 2021.01.16 |
instanceof-호환되지 않는 조건부 피연산자 유형 (0) | 2021.01.16 |