จะแสดงรายการแท็ก Git ทั้งหมดได้อย่างไร


675

ในที่เก็บของฉันฉันได้สร้างแท็กโดยใช้คำสั่งต่อไปนี้

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

คุณจะแสดงรายการแท็กทั้งหมดในที่เก็บได้อย่างไร

คำตอบ:


955
git tag

ควรจะเพียงพอ ดูgit tagหน้าคน


คุณมี:

git tag -l <pattern>

รายการแท็กที่มีชื่อที่ตรงกับรูปแบบที่กำหนด (หรือทั้งหมดหากไม่มีรูปแบบกำหนดไว้)
การพิมพ์ "git tag" โดยไม่มีข้อโต้แย้งแสดงรายการแท็กทั้งหมดด้วย


อีกไม่นาน (" วิธีจัดเรียงแท็ก git " สำหรับ Git 2.0+)

git tag --sort=<type>

เรียงลำดับเฉพาะ

ประเภทที่รองรับคือ:

  • "refname " (คำสั่งทำพจนานุกรม),
  • " version:refname" หรือ " v:refname" (ชื่อแท็กถือว่าเป็นเวอร์ชัน)

เติม "-" เพื่อย้อนลำดับการเรียง


ที่แสดงรายการทั้งสอง:

  • แท็กที่ใส่หมายเหตุประกอบ : วัตถุเต็มเก็บไว้ในฐานข้อมูล Git พวกเขากำลังตรวจสอบ; มีชื่อแท็กเกอร์, อีเมลและวันที่; มีข้อความติดแท็ก และสามารถลงนามและตรวจสอบกับ GNU Privacy Guard (GPG)
  • แท็กน้ำหนักเบา : ตัวชี้อย่างง่ายไปยังการกระทำที่มีอยู่

หมายเหตุ: บทความคอมไพล์พร้อมในการติดแท็กไม่อนุมัติแท็กน้ำหนักเบา

หากไม่มีอาร์กิวเมนต์แท็ก git จะสร้างแท็ก“ lightweight” ซึ่งเป็นสาขาที่ไม่เคยเคลื่อนไหว
แท็กที่มีน้ำหนักเบายังคงมีประโยชน์แม้ว่าอาจใช้สำหรับการทำเครื่องหมายรุ่น (หรือไม่ดี) ที่รู้จักหรืออาจใช้ในอนาคต
อย่างไรก็ตามคุณอาจไม่ต้องการดันแท็กประเภทนี้นี้

โดยปกติคุณต้องการอย่างน้อยผ่านตัวเลือก -a เพื่อสร้างแท็กที่ไม่ได้ลงชื่อหรือลงนามแท็กด้วยคีย์ GPG ของคุณผ่านทางตัวเลือก -s หรือ -u


ที่ถูกกล่าวว่าCharles Baileyชี้ให้เห็นว่าgit tag -m "..."จริงๆแล้ว '' หมายถึงแท็กที่เหมาะสม (ไม่มีคำอธิบายประกอบ) (ตัวเลือก ' -a') และไม่เบา ดังนั้นคุณจะดีกับคำสั่งเริ่มต้นของคุณ


สิ่งนี้แตกต่างจาก:

git show-ref --tags -d

รายการใดที่มีแท็กพร้อมกับการกระทำของตน (ดูที่ " รายการแท็ก Git แสดงการกระทำแฮช sha1 ")
หมายเหตุ-dเพื่อที่จะตรวจสอบวัตถุแท็กหมายเหตุประกอบ (ซึ่งมีการกระทำของตนเอง SHA1) และแสดงการกระทำที่ติดแท็กจริง

ในทำนองเดียวกันgit show --name-only <aTag>จะแสดงรายการแท็กและการกระทำที่เกี่ยวข้อง


6
อาจเพิ่มมูลค่าที่ -m หรือ -F หมายถึง -a (ถ้าไม่ใช่ของ -a, -s หรือ -u มีการระบุไว้อย่างชัดเจนคุณไม่สามารถมีข้อความแท็กโดยไม่สร้างวัตถุแท็ก 'เหมาะสม'
CB Bailey

1
หมายเหตุตนเองด้วย upvote นี้ผมผ่าน 800000 (31 สิงหาคม 2018) บนกองมากเกินหนึ่งปีและหนึ่งเดือนหลังจากถึง 700000 (6 สิงหาคม 2017)
VonC

190

ในการแสดงแท็กที่ฉันชอบ:

git tag -n

-nธงแสดงบรรทัดแรกของข้อความคำอธิบายประกอบพร้อมกับแท็กหรือแรกกระทำบรรทัดข้อความถ้าแท็กไม่ได้มีคำอธิบายประกอบ

คุณสามารถทำได้git tag -n5เพื่อแสดง 5 บรรทัดแรกของคำอธิบายประกอบ


48

นอกจากนี้ยังgit show-refมีประโยชน์ค่อนข้างมากเพื่อให้คุณสามารถเชื่อมโยงแท็กกับการกระทำของผู้ติดต่อได้โดยตรง:

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...

1
เมื่อฉันคุ้นเคยกับ Mercurial hg tagsฉันชอบที่git show-refจะให้แท็กและการแก้ไข
Justin


15

พยายามที่จะทำให้git tagมันควรจะเป็นพอถ้าไม่พยายามที่จะทำให้แล้วgit fetchgit tag


4
ฉันคิดว่าสิ่งที่เขาหมายถึงคือ: git tagคำสั่งที่ใช้ควรจะเพียงพอหากคุณเพียงต้องการดูรายการของแท็กที่มีอยู่ หากคุณไม่เห็นแท็กบางตัวที่คุณเชื่อว่าอาจมีอยู่ในระยะไกลแท็กท้องถิ่นของคุณอาจไม่ซิงค์กับรีโมต ในกรณีนี้เรียก refs ล่าสุด / หัวจากระยะไกลครั้งแรกตามที่เกิดขึ้นจริงgit fetch git tagฉันมักจะใช้สายการบินเดียวเช่นนี้: $ git fetch -p && git tagเพียงเพื่อให้แน่ใจว่าฉันกำลังมองหาที่ล่าสุดและยิ่งใหญ่ที่สุด
demisx

11

การแสดงแท็กที่มีอยู่ใน Git นั้นตรงไปตรงมา เพียงพิมพ์git tag(ด้วยตัวเลือก-lหรือ--list)

$ git tag
v5.5
v6.5

นอกจากนี้คุณยังสามารถค้นหาแท็กที่ตรงกับรูปแบบโดยเฉพาะอย่างยิ่ง

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

รับแท็กล่าสุดในที่เก็บ git

คำสั่งค้นหาแท็กล่าสุดที่สามารถเข้าถึงได้จากการกระทำ หากแท็กชี้ไปที่การกระทำแท็กจะปรากฏขึ้นเท่านั้น มิฉะนั้นจะต่อท้ายชื่อแท็กด้วยจำนวนการคอมมิตเพิ่มเติมที่ด้านบนของวัตถุที่ติดแท็กและชื่อออบเจกต์ที่ย่อของการคอมมิทล่าสุด

git describe

ด้วยการ--abbrevตั้งค่าให้เป็น0คำสั่งที่สามารถใช้ในการหาที่อยู่ใกล้ที่สุดtagnameโดยไม่ต้องต่อท้ายใด ๆ

git describe --abbrev=0

ตัวอย่างอื่น ๆ :

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

วิธีการตัดแท็ก git ท้องถิ่นที่ไม่มีอยู่ในระยะไกล

ที่จะนำมันง่ายๆถ้าคุณกำลังพยายามที่จะทำสิ่งที่ชอบก็จะไม่ทำงานที่เริ่มต้นด้วยรุ่นคอมไพล์git fetch -p -t1.9.4

อย่างไรก็ตามมีวิธีแก้ไขง่ายๆที่ยังคงใช้ได้ในเวอร์ชันล่าสุด:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags

รอบรายการคำสั่งที่เกี่ยวข้องให้ฉันรายการ แต่จบลงด้วยข้อผิดพลาด:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit


6

หากคุณต้องการตรวจสอบชื่อแท็กในเครื่องคุณต้องไปที่เส้นทางที่คุณสร้างแท็ก (เส้นทางในเครื่อง) หมายถึงตำแหน่งที่คุณวางวัตถุของคุณ จากนั้นพิมพ์คำสั่ง:

git show --name-only <tagname>

มันจะแสดงวัตถุทั้งหมดภายใต้ชื่อแท็กนั้น ฉันกำลังทำงานใน Teradata และวัตถุหมายถึงมุมมองตาราง ฯลฯ


4

คุณสามารถแสดงรายการแท็กที่มีอยู่ทั้งหมดgit tagหรือคุณสามารถกรองรายการด้วยgit tag -l 'v1.1.*'ซึ่ง*ทำหน้าที่เป็นสัญลักษณ์แทน v1.1มันจะกลับรายการของแท็กที่มีเครื่องหมาย

คุณจะสังเกตเห็นว่าเมื่อคุณโทรgit tagคุณจะไม่ได้เห็นเนื้อหาของคำอธิบายประกอบ หากต้องการดูตัวอย่างพวกเขาที่คุณต้องเพิ่มคำสั่งของคุณ:-ngit tag -n2

$ git tag -l -n2

v1.0 รุ่นวางจำหน่าย 1.0

v1.1 รุ่นที่วางจำหน่าย 1.1

คำสั่งรายการแท็กที่มีอยู่ทั้งหมดที่มีสูงสุด 3 บรรทัดของข้อความแท็กของพวกเขา โดยค่าเริ่มต้น-nจะแสดงเฉพาะบรรทัดแรก สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบบทความที่เกี่ยวข้องกับแท็กนี้เช่นกัน


0

สำหรับ GUI ในการทำสิ่งนี้ฉันเพิ่งพบว่า 'gitk' รองรับการตั้งชื่อมุมมอง มุมมองมีหลายตัวเลือกสำหรับการเลือกกระทำ หนึ่งอันที่มีประโยชน์คือกล่องสำหรับเลือก "แท็กทั้งหมด" ดูเหมือนว่าฉันจะเห็นแท็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.