ฉันต้องการวิธีที่จะแสดงรายการแท็กทั้งหมดในระบบของฉันตามวันที่สร้างขึ้น แต่ไม่แน่ใจว่าฉันสามารถรับข้อมูลนั้นผ่าน git-log ได้หรือไม่ ไอเดีย?
ฉันต้องการวิธีที่จะแสดงรายการแท็กทั้งหมดในระบบของฉันตามวันที่สร้างขึ้น แต่ไม่แน่ใจว่าฉันสามารถรับข้อมูลนั้นผ่าน git-log ได้หรือไม่ ไอเดีย?
คำตอบ:
การจัดเรียงตามวันที่สร้างแท็กใช้ได้กับแท็กที่มีคำอธิบายประกอบและมีน้ำหนักเบา:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
ทำในสิ่งที่ฉันต้องการ ขอบคุณ!
%(contents)
เพื่อเพิ่มคำอธิบายประกอบได้หากต้องการเช่นgit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
ใช้ได้กับทั้งแท็กที่มีคำอธิบายประกอบและไม่มีคำอธิบาย แต่--sort=taggerdate
ดูเหมือนว่าจะใช้ได้กับแท็กที่มีคำอธิบายประกอบเท่านั้น ทดสอบโดยใช้git version 2.16.3
Git 2.8 (มีนาคม 2016) เอกสารอีกตัวเลือกที่ย้อนหลังไปถึงคอมไพล์ 1.4.4 (Oct2006)
ดูกระทำ e914ef0 (5 มกราคม 2016) โดยเอริควงศ์ (ele828
)
(รวมโดยJunio C Hamano - gitster
-ในการกระทำ 108cb77 , 20 มกราคม 2016)
ดูไฟล์ Documentation/git-for-each-ref.txt
สำหรับอ็อบเจ็กต์คอมมิตและแท็ก ฟิลด์พิเศษ
creatordate
และcreator
ฟิลด์จะตรงกับทูเปิลวันที่หรือชื่อ - วันที่ที่เหมาะสมจากฟิลด์committer
หรือtagger
ขึ้นอยู่กับประเภทอ็อบเจ็กต์ เหล่านี้มีไว้สำหรับการทำงานในการผสมผสานของแท็กข้อเขียนและมีน้ำหนักเบา
ดังนั้นการใช้creatordate
งานกับแท็ก:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
หรือ:
git tag --sort=-creatordate
ตามที่ฉันอธิบายรายละเอียดใน " วิธีจัดเรียงแท็ก git ตามลำดับสตริงเวอร์ชันของแบบฟอร์ม rc-XYZW " คุณสามารถเพิ่มลำดับการจัดเรียงไปยังgit tag
(ตั้งแต่ Git 2.0 มิถุนายน 2014)
ลำดับการจัดเรียงที่มีเป็นชื่อเขต (ระบุไว้ในgit for-each-ref
) taggerdate ที่อนุญาตให้git tag --sort=taggerdate
(กล่าวถึงโดยDarVar ด้านล่าง )
ตัวอย่างเช่นในgit/git
repoจะแสดงรายการv2.10.0
แท็กสุดท้าย:
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
คำสั่งเริ่มต้นจะไม่ ( git tag
):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate
!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
ผลลัพธ์ที่ดีจาก (ไม่มีฟิลด์วันที่):
git log --tags --decorate --simplify-by-decoration --oneline
หากต้องการดูประวัติแบบเต็มที่มีการอ้างอิงและการคอมมิตเชิงเส้นแบบลายเส้น (เฉพาะเหตุการณ์สำคัญเช่นการแท็กและการแยกสาขา / การรวม):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
และได้ผลดีที่สุดสำหรับฉัน
git tag --sort=-taggerdate
ตามหน้าคน "คำนำหน้า - เพื่อเรียงลำดับจากมากไปหาน้อยของค่า"
git tag
ใช้คีย์การเรียงลำดับเดียวกับgit-for-each-ref
ซึ่งเป็นที่จัดเก็บคีย์
บรรทัดเดียวนี้แสดงวันที่และแท็กโดยไม่ต้องยุ่งยาก
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
เอาท์พุท:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
หากคุณไม่ชอบวิธีจัดเรียงแท็กตามค่าเริ่มต้นคุณสามารถจัดเรียงตามวันที่ด้วยตัวเลือก--sort=creatordate
เช่น ดูคำตอบของ VonCสำหรับรายละเอียดเพิ่มเติม
ในการจัดเรียงแท็กคำอธิบายประกอบและแท็กที่มีน้ำหนักเบาโดยสิ้นเชิงตามวันที่คอมมิตฉันใช้
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
คำสั่งนี้จะแสดงรายการทุกแท็กและรหัสอ็อบเจ็กต์คอมมิตที่เกี่ยวข้องตามลำดับเวลา
ด้วย Git version 2.10.0.windows.1
git tag --sort=taggerdate
สิ่งต่อไปนี้ขึ้นอยู่กับการกระทำดังนั้นจึงไม่สำคัญว่าจะมีข้อมูลวันที่พร้อมกับการกระทำหรือไม่:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
คำตอบข้างต้นโดย Josh Lee อาศัยวันที่แท็กเพื่อให้คำสั่งซื้อถูกต้อง
tac
เป็น - more
อาจจะเปลี่ยนไป อย่างไรก็ตามคำสั่งของคุณทำงานได้ดี - ขอบคุณ!
จากวิธีการที่กล่าวถึงก่อนหน้านี้ฉันต้องการดูวันที่แท็กจริงในรายการด้วยดังนั้นเวอร์ชันที่ใช้งานของฉันคือ:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'