git fetch <gitserver> <remotetag>:<localtag>
===================================
Sadece yaptım. Önce etiket adının yazımını bildiğimden emin oldum.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Bu bana git sunucumdan seçim yapabileceğim bir etiket listesi verdi. Orijinal poster etiketinin adını zaten biliyordu, bu yüzden bu adım herkes için gerekli değil. Gerçek liste daha uzun olmasına rağmen çıktı böyle görünüyordu.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
İstediğim etiketi seçtim ve getirdim ve başka hiçbir şey aşağıdaki gibi değildi.
git fetch gitserver Fix_110
Daha sonra bunu yerel makinemde etiketledim ve etiketime aynı adı verdim.
git tag Fix_110 FETCH_HEAD
Çalıştığım proje büyük olduğundan ve güzel ve temiz bir ortamda gelişmek istediğimden, uzak depoyu başkalarının önerdiği gibi klonlamak istemedim. Bu orijinal sorulara daha yakın olduğunu hissediyorum "Ben bir KATILIM ETIKETI indirmek nasıl anlamaya çalışıyorum" çözüm tüm klonlama öneren çözüm daha. DOS 0.1 kaynak koduna (örneğin) bakmak istiyorsa neden herkesin Windows NT ve Windows 8.1 kaynak kodunun bir kopyasına sahip olması gerektiğini anlamıyorum.
Ayrıca başkalarının önerdiği gibi CHECKOUT kullanmak istemiyordu. Bir şube kontrol vardı ve bunu etkilemek istemiyordu. Niyetim, istediğim yazılımı almaktı, böylece bir şey seçip onu gelişimime ekleyebildim.
Muhtemelen etiketlenen taahhüdün bir kopyası değil, etiketin kendisini getirmenin bir yolu vardır. Alınan taahhüdü kendim etiketlemem gerekiyordu. EDIT: Ah evet, şimdi buldum.
git fetch gitserver Fix_110:Fix_110
İki nokta üst üste işaretini gördüğünüz yerde, bu uzak ad: local-name ve işte etiket adları. Bu, çalışma ağacı vb. Bozmadan çalışır. Sadece kendi kopyasına sahip olmak için uzaktan yerel makineye bir şeyler kopyalamak gibi görünüyor.
git fetch gitserver --dry-run Fix_110:Fix_110
--dry-run seçeneği eklendiğinde, ne istediğinizi doğrulamak istiyorsanız komutun ne yapacağına bir göz atmanızı sağlar. Sanırım basit
git fetch gitserver remotetag:localtag
gerçek cevap.
=
Etiketler hakkında ayrı bir not ... Yeni bir şeye başladığımda genellikle git init'ten sonra boş havuzu etiketliyorum, çünkü
git rebase -i XXXXX
bir taahhüt gerektirir ve şu soru ortaya çıkar: "ilk yazılım değişikliğinizi içeren değişiklikleri nasıl yeniden temsili edersiniz?" Böylece çalışmaya başladığımda
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
yani ilk gerçek değişikliğimden önce bir taahhüt oluştur ve daha sonra kullan
git rebase -i EMPTY
ilk değişiklik dahil tüm çalışmalarımı yeniden temellendirmek istersem .