ฉันกำลังทำงานกับพื้นที่เก็บข้อมูลที่มีหลายสาขา
เมื่อฉันสร้างแท็กแท็กนั้นอ้างถึงสาขาปัจจุบันแล้วหรือไม่
กล่าวอีกนัยหนึ่ง: เมื่อใดก็ตามที่ฉันสร้างแท็กฉันจำเป็นต้องสลับไปยังสาขาและแท็กที่ต้องการภายในสาขานั้นเพื่อให้แท็กอ้างถึงสาขานั้น ณ เวลานั้นหรือไม่
ฉันกำลังทำงานกับพื้นที่เก็บข้อมูลที่มีหลายสาขา
เมื่อฉันสร้างแท็กแท็กนั้นอ้างถึงสาขาปัจจุบันแล้วหรือไม่
กล่าวอีกนัยหนึ่ง: เมื่อใดก็ตามที่ฉันสร้างแท็กฉันจำเป็นต้องสลับไปยังสาขาและแท็กที่ต้องการภายในสาขานั้นเพื่อให้แท็กอ้างถึงสาขานั้น ณ เวลานั้นหรือไม่
คำตอบ:
หากคุณสร้างแท็กด้วยเช่น
git tag v1.0
แท็กจะอ้างถึงการกระทำล่าสุดของสาขาที่คุณอยู่ในปัจจุบัน คุณสามารถเปลี่ยนสาขาและสร้างแท็กได้
คุณสามารถอ้างถึงสาขาอื่น ๆ ในขณะที่ติดแท็ก
git tag v1.0 name_of_other_branch
ซึ่งจะสร้างแท็กให้กับการคอมมิทล่าสุดของสาขาอื่น
หรือคุณสามารถวางแท็กไว้ที่ใดก็ได้ไม่ว่าสาขาใดโดยอ้างอิงโดยตรงไปยัง SHA1 ของการกระทำบางอย่าง
git tag v1.0 <sha1>
คำตอบของCharlesBและคำตอบของhelmbert นั้นมีประโยชน์ทั้งสองอย่าง แต่ก็ใช้เวลาพอสมควรที่จะเข้าใจพวกเขา นี่เป็นอีกวิธีในการใส่:
git show <tag>เพื่อดูรายละเอียดของแท็กจึงไม่มีการอ้างอิงไปยังสาขาใด ๆ มีเพียง ID ของการกระทำที่แท็กชี้ไป
6f6b5997506d48fc6267b0b60c3f0261b6afe7a2)git tag v0.1.0 # tags HEAD of *current* branchgit tag v0.1.0 develop # tags HEAD of 'develop' branchgit describeเพื่ออธิบายสาขาปัจจุบัน:
git describe [--tags] อธิบายถึงสาขาปัจจุบันในแง่ของความมุ่งมั่นเนื่องจากแท็ก [อาจมีน้ำหนักเบา] ล่าสุดในประวัติศาสตร์ของสาขานี้git describeอาจไม่ได้สะท้อนให้เห็นถึงแท็กส่วนใหญ่สร้างขึ้นเมื่อเร็ว ๆ นี้โดยรวมแท็กและสาขาไม่เกี่ยวข้องกันอย่างสมบูรณ์เนื่องจากแท็กอ้างถึงการส่งข้อความเฉพาะและสาขาเป็นการอ้างอิงแบบเคลื่อนที่ไปยังการส่งมอบครั้งสุดท้ายของประวัติ สาขาไปแท็กอยู่
ดังนั้นเมื่อคุณติดแท็กคอมมิทแล้วคอมไพล์ไม่สนใจว่าคอมมิชชันหรือสาขาใดถูกชำระเงินถ้าคุณให้ SHA1 แก่เขาในสิ่งที่คุณต้องการติดแท็ก
ฉันสามารถติดแท็กได้โดยอ้างถึงสาขา (จากนั้นจะติดแท็กที่ส่วนปลายของสาขา) และต่อมาบอกว่าปลายของสาขาอยู่ที่อื่น (พร้อมgit reset --hardตัวอย่าง) หรือลบสาขา แท็กที่ฉันสร้างขึ้น แต่จะไม่ย้าย
เมื่อโทรgit tag <TAGNAME>โดยไม่มีพารามิเตอร์เพิ่มเติม Git จะสร้างแท็กใหม่จาก HEAD ปัจจุบันของคุณ (เช่น HEAD ของสาขาปัจจุบันของคุณ) เมื่อเพิ่มการคอมมิตเพิ่มเติมลงในสาขานี้ HEAD ของสาขาจะสอดคล้องกับคอมมิทใหม่เหล่านั้นในขณะที่แท็กอ้างถึงการคอมมิทเดียวกันเสมอ
เมื่อโทรgit tag <TAGNAME> <COMMIT>คุณสามารถระบุได้ว่าจะใช้คอมมิทใดในการสร้างแท็ก
โดยไม่คำนึงถึงแท็กยังเป็นเพียง "ตัวชี้" สำหรับการกระทำบางอย่าง (ไม่ใช่สาขา)
เราสามารถสร้างแท็กสำหรับการส่งในอดีต:
git tag [tag_name] [reference_of_commit]
เช่น:
git tag v1.0 5fcdb03
หากคุณต้องการติดแท็กสาขาที่คุณอยู่ให้พิมพ์:
git tag <tag>
และผลักดันสาขาด้วย:
git push origin --tags
หากคุณต้องการสร้างแท็กจากสาขาซึ่งมีลักษณะคล้ายrelease/yourbranchฯลฯ คุณควรใช้บางอย่างเช่น
git tag YOUR_TAG_VERSION_OR_NAME origin/release/yourbranch
หลังจากสร้างแท็กที่เหมาะสมหากคุณต้องการผลักแท็กไปที่รีโมตจากนั้นใช้คำสั่ง
git push origin YOUR_TAG_VERSION_OR_NAME