git 얕은 클론(clone --depth)으로 원격 분기 누락
원격 저장소를 복제한 후 -a 옵션별 원격 분기가 표시되지 않습니다.무엇이 문제일까요?디버깅하는 방법?이 스니펫에는 원격 분기 중 두 개가 나와 있지 않습니다.
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git --version
git version 1.8.3.1
다른 컴퓨터에서 동일한 명령을 사용해 보았더니 잘 작동합니다.
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
$ git --version
git version 1.7.1
또한 다른 레포를 복제하려고 시도했지만, 잘 작동합니다.이 기계에서 다시 해볼 수는 있지만, 무엇이 잘못되었는지 아는 것이 더 나을 것입니다.
어떤 제안이나 암시라도 환영할 것입니다.
편집: 답변 요약: git 버전 1.8.3.2 이후 "--depth"와 "--no-single-branch"를 함께 사용하여 이전과 동일한 동작을 수행해야 합니다.이것은 버그 수정으로 간주됩니다.
얕은 복제를 한 후, 원격에서 다른 지점을 확인할 수 있도록,
-
git remote set-branches origin '*'
그 다음에.
git fetch -v --depth=1
마침내.
git checkout the-branch-i-ve-been-looking-for
1단계는 편집을 통해 수동으로 수행할 수도 있습니다..git/config
.
예를 들어 다음 행을 변경합니다.
fetch = +refs/heads/master:refs/remotes/origin/master
to (대체)master
와 함께*
):
fetch = +refs/heads/*:refs/remotes/origin/*
@jthill의 반응과 댓글을 읽어본 결과, 제게 가장 효과적이었던 것은set-branches
명령 옵션:
$ git clone --depth 1 https://github.com/dogescript/dogescript.git
$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name
이렇게 하면 지정된 원격에서 추적하는 분기 목록이 변경되어 필요한 분기만 가져오고 체크아웃할 수 있습니다.
동작이 올바릅니다. 마지막 버전 이후 마스터 브랜치는 (기본 원격의 HEAD이므로) 저장소의 유일한 원격 브랜치입니다.
florianb$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
전체 클론은 다음과 같은 새로운(모든) 분기를 제공합니다.
florianb$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
얕은 클론
기술 문서의 설명이 얕기 때문에, "git-clone --depth 20 repo
[...] 결과[sin]는 최대 길이가 20인 체인을 커밋합니다." 따라서 얕은 클론에는 분기 끝에서 요청된 커밋 깊이가 포함되어야 합니다.
의 문서로서 - 추가적으로 - 의 문서로서--single-branch
-옵션 설명:
"단일 분기의 끝으로 이어지는 기록만 복제합니다. 이 기록은 다음에서 지정합니다.
--branch
옵션 또는 기본 분기 원격의HEAD
점을 찍습니다.옵션을 사용하여 얕은 복제본을 만들 때 모든 분기의 끝 근처에서 기록을 가져오도록 지정하지 않는 한 기본값입니다."
따라서 깊이 옵션이 있는 얕은 복제본은 요청한 깊이에서 단일 분기 하나만 가져옵니다.
유감스럽게도 두 옵션 모두(--depth
그리고.--single-branch
문제가 발생합니다(할 수 ). 발생합니다는 과거에 결함이 있었고 얕은 클론을 사용하면 (위에 게시한 링크에서 읽을 수 있듯이) 해결되지 않은 문제가 발생합니다. 이는 지정된 내역 재작성으로 인해 발생합니다.이는 전체적으로 특수한 경우 다소 복잡한 행동으로 이어집니다.
언급URL : https://stackoverflow.com/questions/23708231/git-shallow-clone-clone-depth-misses-remote-branches
'sourcecode' 카테고리의 다른 글
응용 프로그램이 .css 파일(Flask/python)을 선택하지 않음 (0) | 2023.06.23 |
---|---|
MongoDB에서 인덱스로 정렬하는 방법은 무엇입니까? (0) | 2023.06.23 |
Postgres에 대한 pgcrypto의 pgkey_encrypt에 해당하는 MariaDB가 있습니까? (0) | 2023.06.23 |
GitHub: 권한이 거부되었습니다(공개 키).치명적: 원격 끝이 예기치 않게 끊어졌습니다. (0) | 2023.06.23 |
'ngForOf'는 'tr'의 알려진 속성이 아니므로 바인딩할 수 없습니다(최종 릴리스). (0) | 2023.06.23 |