Bagaimana saya bisa mendaftar semua tag di repositori Git saya pada tanggal dibuat?
128
Saya perlu beberapa cara untuk mendaftar semua tag di sistem saya pada tanggal dibuat tetapi saya tidak yakin apakah saya bisa mendapatkan data itu melalui git-log. Ide ide?
Apakah maksud Anda ingin mendapatkan daftar semua tag sesuai tanggal pembuatan yang ada?
lithuak
3
FYI (1.) Pertanyaan ini untuk mencantumkan tag ANNOTATED berdasarkan tanggal. (2.) Untuk mendaftarkan tag LIGHTWEIGHT berdasarkan tanggal, buka di sini . (3.) Untuk pengingat yang bermanfaat tentang apa perbedaan antara tag Git yang ringan dan beranotasi, buka di sini .
Trevor Boyd Smith
@ TrevorBoydSmith: Itu tidak benar. Perbedaannya adalah bahwa (2) mencantumkan semua tag berdasarkan tanggal komit dari tag yang ditandai , sedangkan halaman ini memberikan solusi yang mengurutkan berdasarkan tanggal yang ditandai (meskipun hanya untuk tag beranotasi, karena git tidak menyimpan tanggal yang ditandai untuk tag ringan).
David P
Jawaban:
174
Penyortiran menurut tanggal pembuatan tag berfungsi dengan tag beranotasi dan ringan:
Luar biasa. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagsmelakukan apa yang saya butuhkan. Terima kasih!
Jon Ursenbach
21
Solusi oleh @DrorCohen yang berfungsi untuk tag ringan: stackoverflow.com/questions/6900328/… . Menempel di sini untuk referensi mudah: git log --tags --simplify-by-decoration --pretty = "format:% ai% d"
Gilead
5
Dapat digunakan %(contents)untuk menambahkan anotasi jika diperlukan, misalnyagit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
Tim Diggins
7
Atau bahkan sedikit lebih bersih:git for-each-ref --sort=taggerdate --format '%(tag)'
Baris Wanschers
4
--sort=creatordateberfungsi untuk tag beranotasi dan tidak beranotasi, tetapi --sort=taggerdatetampaknya hanya berfungsi dengan tag beranotasi. diuji menggunakangit version 2.16.3
Untuk objek komit dan tag, bidang khusus creatordatedan creator
akan sesuai dengan tanggal yang sesuai atau nama-email-tanggal tupel dari committeratau taggerbidang tergantung pada jenis objek. Ini dimaksudkan untuk bekerja pada campuran tag beranotasi dan ringan .
Terima kasih banyak. Saya bertanya-tanya mengapa beberapa kencan kosong. Saya sudah mencurigai tag ringan. Saya senang saya tidak perlu membuat ulang tag terima kasih creatordate!
Untuk melihat riwayat lengkap dengan dependensi dan komitmen linear bergaris (hanya peristiwa penting, seperti penandaan dan pencabangan / penggabungan):
Untuk orang-orang malas: git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"dan itu bekerja paling baik untuk saya.
Mateusz
1
Perhatikan bahwa ini dipesan berdasarkan tanggal komit, bukan tanggal tag dibuat. Jawaban teratas (saat ini) dari Josh Lee memesan pada tanggal pembuatan tag.
Nathanial Woolls
13
git tag --sort=-taggerdate
Menurut halaman manual, "Awalan - untuk mengurutkan dalam urutan nilai."
git tagmenggunakan kunci penyortiran yang sama dengan git-for-each-ref, di mana kunci didokumentasikan.
Ini mungkin yang paling benar berdasarkan pertanyaan. Berikut ini tautan ke dokumen yang menguraikan bidang semacam ini: git-scm.com/docs/git-for-each-ref
prasanthv
Respons ini tidak memperhitungkan tag ringan akun karena tag "tanggal tag" kosong. Respons lain dengan "menciptakan" lebih akurat.
morhook
13
Satu baris ini menampilkan tanggal & tag tanpa keributan.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Jika Anda tidak suka bagaimana tag diurutkan secara default, Anda dapat mengurutkan berdasarkan tanggal dengan opsi --sort=creatordate, misalnya. Lihat jawaban VonC untuk lebih jelasnya.
Dikacaukan sedikit. ... Dalam tag beranotasi, 'committerdate' kosong sedangkan di tag ringan 'taggerdate' kosong. Jadi sebagai solusinya '* committerdate' memberitahu Git untuk meng-backreferensi tanggal dari objek commit asli ketika ringan. ...
sana
Menggunakan 'creatordate' sebagai gantinya harus secara efektif melakukan hal yang sama.
Jawaban:
Penyortiran menurut tanggal pembuatan tag berfungsi dengan tag beranotasi dan ringan:
sumber
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
melakukan apa yang saya butuhkan. Terima kasih!%(contents)
untuk menambahkan anotasi jika diperlukan, misalnyagit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
berfungsi untuk tag beranotasi dan tidak beranotasi, tetapi--sort=taggerdate
tampaknya hanya berfungsi dengan tag beranotasi. diuji menggunakangit version 2.16.3
Git 2.8 (Maret 2016) mendokumentasikan opsi lain yang berasal dari git 1.4.4 (Oct2006) .
Lihat komit e914ef0 (05 Jan 2016) oleh Eric Wong (
ele828
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 108cb77 , 20 Jan 2016)Lihat yang baru
Documentation/git-for-each-ref.txt
Jadi menggunakan
creatordate
karya dengan tag:Atau:
Seperti yang saya jelaskan di " Bagaimana cara mengurutkan git tag berdasarkan urutan string versi dari form rc-XYZW? ", Anda dapat menambahkan urutan sortir ke
git tag
(sejak Git 2.0 Juni 2014).Urutan semacam itu termasuk sebagai taggerdate nama bidang (tercantum dalam
git for-each-ref
) . Itu memungkinkan untuk (disebutkan oleh DarVar di bawah ) Sebagai contoh, dalam repo itu akan mencantumkan tag terakhir:git tag --sort=taggerdate
git/git
v2.10.0
Pesanan default tidak akan (
git tag
):sumber
creatordate
!Juga hasil yang bagus dari (tanpa bidang tanggal):
Untuk melihat riwayat lengkap dengan dependensi dan komitmen linear bergaris (hanya peristiwa penting, seperti penandaan dan pencabangan / penggabungan):
sumber
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
dan itu bekerja paling baik untuk saya.Menurut halaman manual, "Awalan - untuk mengurutkan dalam urutan nilai."
git tag
menggunakan kunci penyortiran yang sama dengangit-for-each-ref
, di mana kunci didokumentasikan.sumber
Satu baris ini menampilkan tanggal & tag tanpa keributan.
Keluaran:
Jika Anda tidak suka bagaimana tag diurutkan secara default, Anda dapat mengurutkan berdasarkan tanggal dengan opsi
--sort=creatordate
, misalnya. Lihat jawaban VonC untuk lebih jelasnya.sumber
Agar tag beranotasi dan tag ringan disortir sekaligus, berdasarkan tanggal komit, saya menggunakan:
Perintah ini akan mencantumkan setiap tag dan id objek komit terkait, dalam urutan kronologis.
sumber
Dengan Git
version 2.10.0.windows.1
git tag --sort=taggerdate
sumber
Berikut ini bergantung pada komit, jadi tidak masalah jika memiliki informasi tanggal dengan komit:
Jawaban di atas oleh Josh Lee, bergantung pada tanggal tag untuk mendapatkan pesanan yang benar.
sumber
tac
- mungkin mengubahnyamore
. Pokoknya perintah Anda bekerja dengan baik - terima kasih!Berdasarkan metode yang disebutkan sebelumnya, saya juga ingin melihat tanggal tag aktual pada daftar, dan versi yang digunakan adalah:
sumber