Saat saya memasukkan perintah:
git tag -l
Saya mendapatkan hasil seperti itu:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
Daripada ini saya ingin:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
Bagaimana mungkin mengurutkan daftar saat ini untuk mendapatkan hasil seperti itu?
git tag -l --sort=version:refname "rc-*"
, dan mendapatkan keluaran yang Anda inginkan. lihat jawaban saya di bawah--sort
tersedia untuk git tagJawaban:
Gunakan urutan versi
atau untuk versi git> = 2.0
sumber
brew install gsort
kemudian Anda dapat mengubah baris di atas menjadigit tag -l | gsort -V
dan itu akan bekerja untuk Anda.brew install coreutils
untuk mendapatkangsort
perintah.brew install gsort
gagal, mengatakan tidak ada paket yang dipanggilgsort
.Dengan Git 2.0 (Juni 2014), Anda akan dapat menentukan urutan penyortiran!
Lihat commit b6de0c6 , dari commit 9ef176b , ditulis oleh Nguyễn Thái Ngọc Duy (
pclouds
) :Jadi, jika Anda memiliki:
Inilah yang akan Anda dapatkan:
Sejak commit b150794 (oleh Jacob Keller, git 2.1.0, Agustus 2014), Anda dapat menentukan pesanan default tersebut:
komentar robinst :
Seperti dicatat oleh Leo Galleguillos di komentar :
Dengan Git 2.4 (Q2 2015) , yang
versionsort.prerelease
variabel konfigurasi dapat digunakan untuk menentukan bahwav1.0-pre1
datang sebelumv1.0
.Lihat commit f57610a oleh Junio C Hamano (
gitster
) .Catatan (lihat di bawah)
versionsort.prereleaseSuffix
sekarang (2017) adalah alias yang tidak digunakan lagi untukversionsort.suffix
.git 2.7.1 (Februari 2016) akan meningkatkan outputnya
git tag
sendiri.Lihat commit 0571979 (26 Jan 2016), dan commit 1d094db (24 Jan 2016) by Jeff King (
peff
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 8bad3de , 01 Feb 2016)Karena
git tag
, jika tidak ditentukan, defaultnya adalah%(refname:strip=2)
.Perbarui Git 2.12 (Q1 2017)
Lihat commit c026557 , commit b178464 , commit 51acfa9 , commit b823166 , commit 109064a , commit 0c1b487 , commit 9ffda48 , commit eba286e (08 Dec 2016) oleh SZEDER Gábor (
szeder
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 1ac244d , 23 Jan 2017)versionsort.prereleaseSuffix
adalah alias yang tidak digunakan lagi untukversionsort.suffix
.sumber
--sort
tidak ada di git 1.9.1. (Bekerja pada 2.0.0)git config --global tag.sort version:refname
sort -V
. Satu-satunya keuntungan yang saya lihat adalah portabilitas ke sistem yang tidak memiliki jenis GNU. Tetapi jika Anda memilikinya,| sort -V
golf lebih baik. Masalahnya adalah: metode pengurutan ini tidak menggunakan informasi spesifik Git (tidak seperti misalnya, urutan topologi objek yang ditunjukkan seperti di stackoverflow.com/questions/6900328/… )Menurut jawaban ini , pada platform yang tidak mendukung
sort -V
seperti Windows dan OSX, Anda dapat menggunakangit tag -l | sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4
sumber
Menggabungkan jawaban sudah ada di sini:
Repositori lokal
suffix=-
akan mencegah2.0-rc
datangnya "setelah"2.0
--sort=-
akan menempatkan nomor versi tertinggi di bagian atas.Repositori jarak jauh
Keuntungannya adalah tidak ada objek yang diunduh dari jarak jauh.
Untuk info lebih lanjut lihat jawaban ini .
sumber
versionsort.suffix
. +1.Untuk mendapatkan pengurutan terbalik dengan
sort -V
pendekatan:sumber
Sesuaikan skrip perl ini , yang akan mengurutkan tag yang terlihat
client_release/7.2/7.2.25
, dengan skema pemberian tag khusus Anda.sumber
Saya akhirnya menulis skrip shell sederhana untuk menyederhanakan tugas ini.
Saya menyimpannya seperti
git-tags
di saya$PATH
dan menjalankangit tags
setiap kali saya perlu membuat daftar tag.sumber