Cách git clone một thẻ cụ thể


188

Từ trang hướng dẫn git-clone (1)

--branch cũng có thể lấy các thẻ và tách phần ĐẦU tại cam kết đó trong kho lưu trữ kết quả.

Tôi đã thử

git clone --branch <tag_name> <repo_url>

Nhưng nó không hoạt động. Nó trở lại:

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

Làm thế nào để sử dụng tham số này?



2
Bạn nói đúng, nhưng ít khác biệt. Khi tôi hỏi câu hỏi này, trong tình huống của tôi, tôi cần phải làm điều này trong một dòng và phải sử dụng clone, và tôi đã bị mắc kẹt tại 'tại sao --branch không hoạt động'. Câu trả lời tốt nhất của url đó được sử dụng clone-> checkout, không thể giải quyết câu hỏi của tôi. :)
Giang Jun

Câu trả lời:


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

Lệnh này không được hỗ trợ trong git 1.7.9.5.

Tôi sử dụng git 1.8.3.5 và nó hoạt động


88
FYI: Cũng xác định --depth 1để tránh tải xuống bất kỳ cam kết không hiện tại.
Acumenus

1
Hoạt động tốt trong git 1.8.4.1
taco

Điều này không hoạt động. Sau khi sao chép nếu bạn thực hiện, git tagnó sẽ không hiển thị thẻ
Người dùng không có mũ

Lưu ý nếu ref không rõ ràng và bạn có một nhánh và một thẻ được đặt tên giống nhau, điều này sẽ thích nhánh hơn.
Keith Smiley

1
Một cam kết không hiện tại là gì?
d512

74

Sử dụng --single-branchtùy chọn để chỉ sao chép lịch sử dẫn đến đầu thẻ . Điều này tiết kiệm rất nhiều mã không cần thiết khỏi bị sao chép.

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

3
--single-branchtương đương với --depth 1?
igracia

14
Không, nó không tương đương. --single-chi nhánh nhân bản lịch sử cho cả một chi nhánh. Với - ngày 1 không có lịch sử nào được nhân bản.
Fabian Thommen

2
Cũng --single-branchđược ngụ ý khi --depthđược sử dụng. Từ hướng dẫnWhen 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    

Sẽ nhanh hơn:

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

Hoặc là

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 1là một viên ngọc quý, vì vậy nhiều người tải xuống toàn bộ lịch sử git chỉ để sử dụng HEAD.
MGP

2
--depth 1nên được làm mặc định; nếu ai đó cố gắng kiểm tra lại một cam kết trước đó, họ sẽ được nhắc tải xuống phần còn lại.
Jikku Jose

3

Sử dụng lệnh

git clone --help

để xem liệu git của bạn có hỗ trợ lệnh không

git clone --branch tag_name

Nếu không, chỉ cần làm như sau:

git clone repo_url 
cd repo
git checkout tag_name

1

Nhân bản một thẻ cụ thể, có thể trả về trạng thái 'tách rời' .

Như một giải pháp thay thế, hãy thử sao chép repo trước, sau đó kiểm tra một thẻ cụ thể. Ví dụ:

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

Lưu ý: Vì Git 1.8.5 , bạn có thể sử dụng -C <path>, thay vì --work-tree--git-dir.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.