Sistemimdeki tüm etiketleri oluşturuldukları tarihe göre listelemek için bir yola ihtiyacım var, ancak bu verileri git-log aracılığıyla alabileceğimden emin değilim. Fikirler?
Sistemimdeki tüm etiketleri oluşturuldukları tarihe göre listelemek için bir yola ihtiyacım var, ancak bu verileri git-log aracılığıyla alabileceğimden emin değilim. Fikirler?
Yanıtlar:
Etiket oluşturma tarihine göre sıralama, açıklamalı ve hafif etiketlerle çalışır:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagstam olarak ihtiyacım olanı yaptım. Teşekkürler!
%(contents)gerekirse ek açıklamada eklemek, örneğingit for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordatehem açıklamalı hem de açıklamasız etiketler için çalışır, ancak --sort=taggerdateyalnızca açıklamalı etiketlerle çalışıyor gibi görünüyor. kullanılarak test edildigit version 2.16.3
Git 2.8 (Mart 2016), 1.4.4'e (Ekim 2006) kadar uzanan başka bir seçeneği belgeliyor .
See commit e914ef0 (05 Ocak 2016), Eric Wong ( ele828) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 108cb77 tamamlama 2016, 20 Ara)
Yeniyi görün Documentation/git-for-each-ref.txt
Kaydetme ve etiketleme nesneleri için, özel
creatordatevecreatoralanlar , nesne türüne bağlı olarakcommitterveyataggeralanlarından uygun tarihe veya ad-e-posta-tarih dizisine karşılık gelir .
Bunlar, açıklamalı ve hafif etiketlerin bir karışımı üzerinde çalışmak için tasarlanmıştır .
Yani kullanmak creatordateetiketlerle çalışır:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Veya:
git tag --sort=-creatordate
" Git etiketleri rc-XYZW biçimindeki sürüm dizesine göre nasıl sıralanır? " Bölümünde ayrıntılarıyla anlattığım gibi , bir sıralama düzeni ekleyebilirsiniz git tag(Git 2.0 Haziran 2014'ten beri).
Bu sıralama düzeni, alan adı olarak (listelenmiş git for-each-ref) taggerdate içerir . Bu izin verir git tag --sort=taggerdate( aşağıda DarVar tarafından bahsedilmiştir )
Örnek olarak,git/git repo o listeler v2.10.0son etiketi:
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
Varsayılan sıra git tagşunları yapmaz ( ):
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"
Ayrıca (tarih alanı olmadan) güzel çıktı:
git log --tags --decorate --simplify-by-decoration --oneline
Bağımlılıklar ve çizgili doğrusal işlemlerle tam geçmişi görmek için (yalnızca etiketleme ve dallanma / birleştirme gibi önemli olaylar):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"ve benim için en iyisi bu.
git tag --sort=-taggerdate
Man sayfasına göre, "Önek - değerin azalan sırasına göre sıralamak için."
git taggit-for-each-refAnahtarların belgelendiği yer olan aynı sıralama anahtarlarını kullanır .
Bu tek satırlık program, tarihleri ve etiketleri sorunsuz bir şekilde görüntüler.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Çıktı:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
Etiketlerin varsayılan olarak nasıl sıralandığından hoşlanmıyorsanız --sort=creatordate, örneğin seçeneğiyle tarihe göre sıralayabilirsiniz . Daha fazla ayrıntı için VonC yanıtına bakın.
Ek açıklamalı etiketlerin ve hafif etiketlerin tamamlanma tarihine göre sıralanması için kullanıyorum:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Bu komut, her etiketi ve ilişkili commit nesnesi kimliğini kronolojik sırayla listeler.
Aşağıdakiler kaydetmeye dayanır, bu nedenle kaydetme ile tarih bilgisine sahip olup olmaması önemli değildir:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
Josh Lee'nin yukarıdaki cevabı, siparişin doğru olması için bir etiket tarihine dayanıyor.
tac- olarak değişebilir more. Her neyse, emriniz harika çalıştı - teşekkürler!
Daha önce bahsedilen yöntemlere dayanarak, listedeki gerçek etiket tarihini de görmek istedim ve bu nedenle kullanımdaki sürümüm:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'