Kiedy wprowadzam polecenie:
git tag -l
Uzyskuję takie wyniki:
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
Zamiast tego chcę:
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
Jak można posortować aktualną listę, aby uzyskać takie wyniki?
git tag -l --sort=version:refname "rc-*"
i uzyskać żądane wyniki. zobacz moją odpowiedź poniżej--sort
jest dostępny dla tagu gitOdpowiedzi:
Użyj sortowania wersji
lub dla wersji git> = 2.0
źródło
brew install gsort
następnie możesz zmodyfikować powyższy wiersz nagit tag -l | gsort -V
i powinien on działać dla Ciebie.brew install coreutils
aby uzyskaćgsort
polecenie.brew install gsort
nie powiodło się, mówiąc, że nie wywołano żadnego pakietugsort
.Dzięki Git 2.0 (czerwiec 2014) będziesz mógł określić kolejność sortowania!
Zobacz commit b6de0c6 , z commit 9ef176b , autorstwa Nguyễn Thái Ngọc Duy (
pclouds
) :Więc jeśli masz:
Oto, co byś otrzymał:
Ponieważ zatwierdzenie b150794 (autorstwa Jacoba Kellera, git 2.1.0, sierpień 2014), możesz określić tę domyślną kolejność:
robinst komentarze :
Jak zauważył Leo Galleguillos w komentarzach :
Z Git 2.4 (Q2 2015) , zmienna konfiguracja może być używana do określenia, że jest przed .
versionsort.prerelease
v1.0-pre1
v1.0
Zobacz commit f57610a autorstwa Junio C Hamano (
gitster
) .Uwaga (patrz poniżej)
versionsort.prereleaseSuffix
jest teraz (2017) przestarzałym aliasem dla platformyversionsort.suffix
.git 2.7.1 (luty 2016) poprawi swoją wydajność
git tag
.Zobacz commit 0571979 (26 stycznia 2016) i commit 1d094db (24 stycznia 2016) autorstwa Jeffa Kinga (
peff
) .(Scalony przez Junio C Hamano -
gitster
- w zatwierdzeniu 8bad3de , 01 lutego 2016)Do
git tag
kiedy nieokreślone, domyślnie%(refname:strip=2)
.Zaktualizuj Git 2.12 (I kwartał 2017)
Zobacz zatwierdzenie c026557 , zatwierdzenie b178464 , zatwierdzenie 51acfa9 , zatwierdzenie b823166 , zatwierdzenie 109064a , zatwierdzenie 0c1b487 , zatwierdzenie 9ffda48 , zatwierdzenie eba286e (08 grudnia 2016) autorstwa SZEDER Gábor (
szeder
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 1ac244d , 23 stycznia 2017 r.)versionsort.prereleaseSuffix
jest przestarzałym aliasem dlaversionsort.suffix
.źródło
--sort
nie istnieje na git 1.9.1. (pracował nad 2.0.0)git config --global tag.sort version:refname
sort -V
. Jedyną zaletą, jaką widzę, jest przenośność na systemy, które nie mają sortowania GNU. Ale jeśli masz to| sort -V
golfa lepiej. Rzecz w tym, że ta metoda sortowania nie używa żadnych informacji specyficznych dla Gita (w przeciwieństwie np. Do topologicznej kolejności obiektu wskazywanego jak w stackoverflow.com/questions/6900328/ ... )Zgodnie z tą odpowiedzią na platformach, które nie obsługują,
sort -V
takich jak Windows i OSX, możesz użyćgit tag -l | sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4
źródło
Łącząc odpowiedzi już tutaj:
Lokalne repozytorium
suffix=-
zapobiegnie2.0-rc
przyjściu „po”2.0
--sort=-
umieści najwyższy numer wersji na górze.Zdalne repozytorium
Zaletą tego jest to, że żadne obiekty nie są pobierane z pilota.
Aby uzyskać więcej informacji, zobacz tę odpowiedź .
źródło
versionsort.suffix
. +1.Aby uzyskać odwrotne sortowanie z
sort -V
podejściem:źródło
Dostosuj ten skrypt Perla , który sortuje wyglądające tagi
client_release/7.2/7.2.25
, do konkretnego schematu tagowania.źródło
Skończyło się na napisaniu prostego skryptu powłoki, aby uprościć to zadanie.
Zapisałem to jako
git-tags
moje$PATH
i uruchamiam,git tags
gdy chcę wyświetlić tagi.źródło