จะแสดงรายการแท็กทั้งหมดพร้อมกับข้อความแบบเต็มในคอมไพล์ได้อย่างไร?


359

ฉันต้องการให้คอมไพล์แสดงรายการแท็กทั้งหมดพร้อมกับคำอธิบายประกอบแบบเต็มหรือส่งข้อความ บางสิ่งเช่นนี้อยู่ใกล้:

git tag -n5

สิ่งนี้ทำในสิ่งที่ฉันต้องการอย่างแน่นอนยกเว้นว่าจะแสดงข้อความแท็กได้ถึง 5 บรรทัดแรกเท่านั้น

ฉันเดาว่าฉันสามารถใช้ตัวเลขจำนวนมากได้ จำนวนสูงสุดที่ฉันสามารถใช้ที่นี่คืออะไร คอมพิวเตอร์ทุกเครื่องเหมือนกันหรือไม่

UPDATE : ฉันมีเวลามากพอที่จะคิดเกี่ยวกับเรื่องนี้และตอนนี้ฉันคิดว่าฉันไม่ต้องการแสดงข้อความทั้งหมดหากพวกเขาบางคนมีความยาวเป็นพิเศษ ฉันไม่ได้ต้องการอะไรเป็นพิเศษซึ่งทำให้ฉันต้องเห็นข้อความจำนวนมาก (นอกเหนือจากความชอบของฉันเองที่ต้องใช้เวลานานในทุกสิ่งที่ฉันเขียนรวมถึงข้อความแท็ก) ฉันไม่ชอบความคิดที่ว่ามันไม่จำเป็นที่จะต้องแสดงข้อความทั้งหมดให้ฉันเพราะนั่นทำให้ฉันรู้สึกเหมือนกำลังซ่อนข้อมูลจากฉัน แต่ข้อมูลที่มากเกินไปก็อาจเป็นสิ่งที่ไม่ดีเช่นกัน


62
git tag -nทำเพื่อฉัน
Martin Berger

11
git tag -nพิมพ์บรรทัดแรกของหมายเหตุประกอบเท่านั้นตาม manpage
ราคาพอล

@INTPner, ตกลง, แท็ก -l ใช้สำหรับแสดงรายการแท็กด้วยรูปแบบเฉพาะ การแก้ไขคำตอบ
Zubair

คำตอบ:


348

ลองสิ่งนี้มันจะแสดงรายการแท็กทั้งหมดพร้อมกับคำอธิบายประกอบ & 9 บรรทัดข้อความสำหรับทุกแท็ก:

git tag -n9

ยังสามารถใช้

git tag -l -n9

หากมีการระบุแท็กเฉพาะ:

git tag -l -n9 v3.*

(เช่นคำสั่งด้านบนจะแสดงเฉพาะแท็กที่ขึ้นต้นด้วย "v3")

-l, - รายการแท็กรายการที่มีชื่อที่ตรงกับรูปแบบที่กำหนด (หรือทั้งหมดหากไม่ได้รับรูปแบบ) การเรียกใช้ "แท็ก git" โดยไม่มีอาร์กิวเมนต์จะแสดงรายการแท็กทั้งหมดด้วย รูปแบบเป็นสัญลักษณ์แทนเชลล์ (เช่นจับคู่โดยใช้ fnmatch (3)) อาจมีหลายรูปแบบ หากมีรายการใดตรงกับแท็กนั้นจะปรากฏขึ้น


6
นี่จะพิมพ์บรรทัดแรกของแต่ละคำอธิบายประกอบเท่านั้น
พอลไพรซ์

3
@ ราคาพอล: มีเพียงคุณเท่านั้นที่มีคำอธิบายประกอบมิฉะนั้นจะพิมพ์ข้อความยืนยัน เห็นด้วยนี้ไม่ได้คำตอบ
Ciro Santilli 法轮功冠状病六四事件法轮功

3
ตามเอกสารประกอบ-lตัวเลือกคือการกรองในรูปแบบ ฉันไม่เห็นว่าจะเป็นประโยชน์ที่นี่ ฉันพลาดอะไรไปรึเปล่า?
still_dreaming_1

2
@INTPnerd ใช่-lฟุ่มเฟือยที่นี่ทั้งหมด
Lambart

1
@ P.MyerNore คุณต้องใช้คอมไพล์รุ่นแปลก ๆ หรือส่งอาร์กิวเมนต์เพิ่มเติมเพื่อทำอะไรมากกว่าคำถามที่ถามมา แต่เป็นการดีที่จะรู้ว่าในบางสถานการณ์จำเป็นต้องใช้ -l
still_dreaming_1

119
git tag -n99

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

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

ฉันหมายถึงฉันเดาว่าอาจมีสถานการณ์หรือเหตุผลเฉพาะเจาะจงที่ต้องการเห็นข้อความแท็กขนาดใหญ่ แต่ ณ จุดใดที่คุณไม่ต้องการเห็นข้อความทั้งหมด เมื่อมีมากกว่า 999 บรรทัด? 10,000? 1,000,000? ประเด็นของฉันคือโดยทั่วไปแล้วมันสมเหตุสมผลที่จะมีขีด จำกัด จำนวนบรรทัดที่คุณเห็นและจำนวนนี้อนุญาตให้คุณตั้งค่า

เนื่องจากฉันกำลังโต้เถียงกับสิ่งที่คุณต้องการเห็นเมื่อดูแท็กของคุณมันอาจเหมาะสมที่จะตั้งชื่อแบบนี้เป็นนามแฝง (จากความคิดเห็นของ Iulian Onofrei ด้านล่าง):

git config --global alias.tags 'tag -n99'

ฉันหมายความว่าคุณไม่จำเป็นต้องพิมพ์git tag -n99ทุกครั้งที่คุณต้องการเห็นแท็กของคุณใช่ไหม เมื่อกำหนดค่านามแฝงแล้วเมื่อใดก็ตามที่คุณต้องการเห็นแท็กของคุณคุณก็แค่พิมพ์git tagsลงในเทอร์มินัลของคุณ โดยส่วนตัวแล้วฉันชอบที่จะก้าวไปไกลกว่านี้และสร้างนามแฝงทุบตีที่ยากยิ่งขึ้นสำหรับคำสั่งที่ใช้บ่อยทั้งหมดของฉัน เพื่อจุดประสงค์นี้คุณสามารถเพิ่มสิ่งนี้ลงในไฟล์. bashrc ของคุณ (ทำงานบน Linux และสภาพแวดล้อมที่คล้ายกัน):

alias gtag='git tag -n99'

gtagจากนั้นเมื่อใดก็ตามที่คุณต้องการที่จะเห็นแท็กของคุณคุณเพียงแค่พิมพ์ ข้อดีอีกอย่างของการลงเส้นทางนามแฝง (ไม่ว่าจะเป็นนามแฝงคอมไพล์หรือนามแฝงทุบตีหรืออะไรก็ตาม) คือตอนนี้คุณมีจุดที่คุณสามารถเพิ่มการปรับแต่งเพิ่มเติมตามวิธีส่วนตัวของคุณโดยทั่วไปแล้วต้องการให้แท็กของคุณแสดงต่อคุณ พวกเขาในบางวิธีตามที่ฉันแสดงความคิดเห็นด้านล่าง ฯลฯ ) เมื่อคุณผ่านการสร้างนามแฝงแรกของคุณแล้วคุณจะรู้ว่ามันง่ายเพียงใดในการสร้างสิ่งเหล่านี้สำหรับสิ่งอื่น ๆ ที่คุณต้องการทำงานในแบบที่กำหนดเองเช่นgit logแต่ขอบันทึกไว้สำหรับคำถาม / คำตอบที่แตกต่างกัน .


3
git config --global alias.tags 'tag -n99'
Iulian Onofrei

@IulianOnofrei ดีฉันไม่ทราบว่าคอมไพล์อนุญาตให้คุณกำหนดชื่อแทน ฉันรู้ว่านี่เป็นหัวข้อนอก แต่ฉันไม่สามารถต้านทานได้ นี่คือสิ่งที่ฉันกำลังใช้อยู่ (วางไว้ใน. bashrc ของคุณหรืออะไรทำนองนั้น):alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
Still_dreaming_1

25

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

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

การแสดงคอมไพล์ของ Mark ไม่ได้แสดงการแก้ไขสำหรับการใช้งานของฉัน คำสั่งของเขาละเว้น -p หรือ --patch แต่เพื่อให้แน่ใจโดยสิ้นเชิงว่าการข้ามส่วนต่างสามารถใช้: - ไม่มีแพทช์ (ในคอมไพล์ v2.7.1 / mac)
AnneTheAgile

13

มันค่อนข้างไกลจากสวย ๆ แต่คุณสามารถสร้างสคริปต์หรือนามแฝงที่ทำสิ่งนี้:

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

มีเหตุผลที่จะไม่แทนที่git for-each-ref refs/tags/ --format='%(refname)'ด้วยgit tag -l?
ไชค์เบอร์เกอร์

@ShaiBerger: ในทางปฏิบัติฉันไม่คิดอย่างนั้น - ฉันคิดว่าฉันแค่คิดว่าgit tagเป็นเครื่องลายครามและgit for-each-refระบบประปาดังนั้นผลลัพธ์ของสิ่งหลังควรมีเสถียรภาพมากกว่าสำหรับการเขียนสคริปต์
Mark Longair

10

ข้อความแท็กล่าสุดเท่านั้น:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

2
สำหรับคนอื่นที่เกิดขึ้นกับสิ่งนี้จาก google: ถ้าคุณต้องการที่จะแสดงข้อความจากแท็กเฉพาะ: git cat-file -p <tag> | tail -n +6
Kit Peters


2

ฉันชอบทำสิ่งนี้ในบรรทัดคำสั่ง แต่ถ้าคุณไม่สนใจเว็บอินเตอร์เฟสและคุณใช้ GitHub คุณสามารถเยี่ยมชมhttps://github.com/user/repo/tagsและคลิกที่ "... " ถัดจากแต่ละแท็กเพื่อแสดงคำอธิบายประกอบ

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