특정 태그를 git clone하는 방법


192

에서 자식-클론 (1) 매뉴얼 페이지

--branch 결과 저장소의 커밋에서 태그를 가져와 HEAD를 분리 할 수도 있습니다.

나는 시도했다

git clone --branch <tag_name> <repo_url>

그러나 작동하지 않습니다. 다음을 반환합니다.

warning: Remote branch 2.13.0 not found in upstream origin, using HEAD instead

이 매개 변수를 사용하는 방법은 무엇입니까?



2
당신 말이 맞지만 차이는 거의 없습니다. 이 질문을 할 때 내 상황 에서이 작업을 한 줄로 수행해야 clone하고을 사용해야 하며 '왜 --branch가 작동하지 않는지'에 붙어 있습니다. 해당 URL의 가장 좋은 대답은 clone-> 사용 checkout했는데 내 질문을 해결할 수 없습니다. :)
Jiang Jun

답변:


325
git clone --branch <tag_name> <repo_url>

이 명령은 git 1.7.9.5에서 지원되지 않습니다.

git 1.8.3.5를 사용하고 작동합니다.


92
참고 : 또한 --depth 1현재 커밋이 아닌 커밋을 다운로드하지 않도록 지정하십시오 .
Acumenus

1
자식 1.8.4.1에서 잘 작동
taco

작동하지 않습니다. 복제 후 git tag태그가 표시되지 않으면
모자가없는 사용자

참조가 모호하고 브랜치와 같은 이름의 태그가있는 경우 브랜치가 선호됩니다.
키이스 스마일

1
현재가 아닌 커밋이란 무엇입니까?
d512

74

--single-branch옵션을 사용 하여 태그 끝으로 이어지는 기록 만 복제 하십시오 . 이렇게하면 불필요한 코드가 많이 복제되지 않습니다.

git clone <repo_url> --branch <tag_name> --single-branch

3
--single-branch해당 --depth 1합니까?
igracia

14
아닙니다. --single-branch는 전체 분기에 대한 기록을 복제합니다. --depth 1을 사용하면 기록이 전혀 복제되지 않습니다.
Martin Krung

2
또한 사용될 --single-branch때 내포 --depth됩니다. 매뉴얼에서When creating a shallow clone with the --depth option, this is the default
koda

33
git clone -b 13.1rc1-Gotham  --depth 1  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Counting objects: 17977, done.
remote: Compressing objects: 100% (13473/13473), done.
Receiving objects:  36% (6554/17977), 19.21 MiB | 469 KiB/s    

보다 빠를 것입니다 :

git clone https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  14% (40643/282238), 55.46 MiB | 578 KiB/s

또는

git clone -b 13.1rc1-Gotham  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  12% (34441/282238), 20.25 MiB | 461 KiB/s

6
--depth 1보석이므로 많은 사람들이 git history를 다운로드하여을 사용합니다 HEAD.
MGP

2
--depth 1기본값으로 설정해야합니다. 누군가 이전 커밋을 거부하려고하면 나머지를 다운로드하라는 메시지가 표시됩니다.
Jikku Jose

3

명령을 사용하십시오

git clone --help

자식이 명령을 지원하는지 확인

git clone --branch tag_name

그렇지 않은 경우 다음을 수행하십시오.

git clone repo_url 
cd repo
git checkout tag_name

1

특정 태그를 복제하면 '분리 된 HEAD'상태 가 반환 될 수 있습니다 .

이 문제를 해결하려면 먼저 저장소를 복제 한 다음 특정 태그를 체크 아웃하십시오. 예를 들면 다음과 같습니다.

repo_url=https://github.com/owner/project.git
repo_dir=$(basename $repo_url .git)
repo_tag=0.5

git clone --single-branch $repo_url # using --depth 1 can show no tags
git --work-tree=$repo_dir --git-dir=$repo_dir/.git checkout tags/$repo_tag

참고 : Git 1.8.5 부터 및 -C <path>대신 에을 사용할 수 있습니다 .--work-tree--git-dir

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.