git fetch <gitserver> <remotetag>:<localtag>
===================================
ฉันเพิ่งทำสิ่งนี้ ครั้งแรกฉันทำให้แน่ใจว่าฉันรู้การสะกดชื่อแท็ก
git ls-remote --tags gitserver; : or origin, whatever your remote is called
สิ่งนี้ทำให้ฉันมีรายการของแท็กบนเซิร์ฟเวอร์ git ของฉันให้เลือก โปสเตอร์ต้นฉบับรู้จักชื่อแท็กของเขาอยู่แล้วดังนั้นขั้นตอนนี้ไม่จำเป็นสำหรับทุกคน ผลลัพธ์ดูเหมือนว่านี้ แต่รายการจริงจะยาวกว่า
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
ฉันเลือกแท็กที่ฉันต้องการและดึงข้อมูลนั้นและไม่มีอะไรเพิ่มเติมดังต่อไปนี้
git fetch gitserver Fix_110
จากนั้นฉันติดแท็กสิ่งนี้ในเครื่องท้องถิ่นของฉันตั้งชื่อเดียวกันกับแท็ก
git tag Fix_110 FETCH_HEAD
ฉันไม่ต้องการโคลนพื้นที่เก็บข้อมูลระยะไกลเป็นคนอื่นได้แนะนำให้ทำเพราะโครงการที่ฉันทำงานมีขนาดใหญ่และฉันต้องการที่จะพัฒนาในสภาพแวดล้อมที่สะอาดดี ฉันรู้สึกว่ามันใกล้เคียงกับคำถามดั้งเดิม "ฉันพยายามหาวิธีดาวน์โหลดแท็กแบบเฉพาะ" กว่าโซลูชันที่แนะนำการโคลนพื้นที่เก็บข้อมูลทั้งหมด ฉันไม่เห็นสาเหตุที่ทุกคนควรมีสำเนาซอร์สของ Windows NT และ Windows 8.1 หากพวกเขาต้องการดูซอร์สโค้ด DOS 0.1 (ตัวอย่าง)
ฉันไม่ต้องการใช้ CHECKOUT ตามที่คนอื่นแนะนำ ฉันตรวจสอบสาขาแล้วและไม่ต้องการส่งผลกระทบต่อสิ่งนั้น ความตั้งใจของฉันคือการดึงซอฟต์แวร์ที่ฉันต้องการเพื่อให้ฉันสามารถหยิบบางสิ่งบางอย่างเชอร์รี่และเพิ่มเข้าไปในการพัฒนาของฉัน
อาจมีวิธีดึงแท็กเองแทนที่จะเป็นเพียงสำเนาของการส่งมอบที่ติดแท็ก ฉันต้องติดแท็กให้กับตัวเอง แก้ไข: ใช่แล้วฉันได้พบแล้ว
git fetch gitserver Fix_110:Fix_110
ที่ซึ่งคุณเห็นเครื่องหมายจุดคู่นั่นคือ remote-name: local-name และนี่คือชื่อแท็ก สิ่งนี้จะทำงานโดยไม่ทำให้ต้นไม้ทำงาน ฯลฯ ดูเหมือนว่าจะคัดลอกข้อมูลจากรีโมตไปยังเครื่องท้องถิ่นเพื่อให้คุณมีสำเนาของคุณเอง
git fetch gitserver --dry-run Fix_110:Fix_110
ด้วยตัวเลือก --dry-run ที่เพิ่มเข้ามาจะช่วยให้คุณได้เห็นสิ่งที่คำสั่งจะทำถ้าคุณต้องการตรวจสอบสิ่งที่คุณต้องการ ดังนั้นฉันเดาง่าย ๆ
git fetch gitserver remotetag:localtag
คือคำตอบที่แท้จริง
=
บันทึกย่อแยกต่างหากเกี่ยวกับแท็ก ... เมื่อฉันเริ่มต้นสิ่งใหม่ฉันมักจะติดแท็กพื้นที่เก็บข้อมูลว่างเปล่าหลังจาก git init ตั้งแต่
git rebase -i XXXXX
ต้องมีการกระทำและคำถามเกิดขึ้น "คุณจะรีบูตการเปลี่ยนแปลงที่มีการเปลี่ยนแปลงซอฟต์แวร์ครั้งแรกของคุณได้อย่างไร" ดังนั้นเมื่อฉันเริ่มทำงานฉันจะทำ
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
คือสร้างคอมมิชชันก่อนการเปลี่ยนแปลงจริงของฉันครั้งแรกจากนั้นใช้ในภายหลัง
git rebase -i EMPTY
ถ้าผมต้องการที่จะ rebase การทำงานทั้งหมดของฉันรวมทั้งการเปลี่ยนแปลงครั้งแรก