Git'te tüm mesajla birlikte tüm etiketleri nasıl listeleyebilirim?


361

Git'in tüm açıklamaları tam açıklama veya taahhüt mesajı ile birlikte listelemesini istiyorum. Bunun gibi bir şey yakın:

git tag -n5

Bu tam olarak istediğim şeyi yapar, ancak etiket mesajının sadece ilk 5 satırına kadar görünecektir.

Sanırım çok büyük bir sayı kullanabilirim. Burada kullanabileceğim en yüksek sayı nedir? Her bilgisayarda aynı mı?

GÜNCELLEME : Bunu düşünmek için çok zamanım oldu ve şimdi, bazılarının olağanüstü uzun olması durumunda her mesajın tamamını göstermek istemediğimi düşünüyorum. Gerçekten büyük mesajlar görmemi gerektiren özel bir gereksinimim yoktu (etiket mesajları da dahil olmak üzere yazdığım her şeyde uzun soluklu olma eğilimim dışında). Sadece mesajın tamamını göstermeyeceği fikrinden hoşlanmadım, çünkü bu beni benden bilgi saklıyormuş gibi hissettirdi. Ancak çok fazla bilgi de kötü bir şey olabilir.


62
git tag -nbenim için yaptım
Martin Berger

11
git tag -naçıklamaya göre, ek açıklamaların yalnızca ilk satırını yazdırır.
Paul Price

@INTPner, kararlaştırılan, -l etiketi, belirli bir desene sahip etiketleri listelemek için kullanılır. Cevabı düzenleme.
Zubair

Yanıtlar:


351

Bunu deneyin, tüm etiketleri ek açıklamalarla birlikte ve her etiket için 9 mesaj satırı listeleyecektir:

git tag -n9

ayrıca kullanabilir

git tag -l -n9

belirli etiketler listelenecekse:

git tag -l -n9 v3.*

(örneğin, yukarıdaki komut yalnızca "v3" ile başlayan etiketleri görüntüler).

-l, --list Verilen kalıpla eşleşen adlara sahip etiketleri listele (veya kalıp verilmemişse tümünü). "Git tag" ifadesini bağımsız değişkenler olmadan çalıştırmak tüm etiketleri listeler. Desen bir kabuk joker karakteridir (yani fnmatch (3) kullanılarak eşleştirilir). Birden çok desen verilebilir; bunlardan herhangi biri eşleşirse, etiket gösterilir.


6
Bu, her ek açıklamanın yalnızca ilk satırını yazdırır.
Paul Price

3
@Paul Price: sadece bir ek açıklama var, aksi takdirde taahhüt mesajını yazdırır. Bu değil Katılıyorum cevap.
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功

3
Belgelere göre, -lseçenek bir desene filtre uygulamaktır. Bunun nasıl yardımcı olacağını görmüyorum. Bir şey mi kaçırıyorum?
still_dreaming_1

2
@INTPnerd evet, -lburada tamamen gereksiz
Lambart

1
@ P.MyerNore Bu sorunun sorduğundan daha fazlasını yapmak için git'in garip bir sürümünü kullanmalı veya ek argümanlar geçirmelisiniz. Ancak, belirli durumlar için -l'ye ihtiyaç olduğunu bilmek iyidir.
still_dreaming_1

119
git tag -n99

Kısa ve güzel. Bu, her etiket ek açıklama / taahhüt mesajından 99 satıra kadar listeler. İşte git etiketi için resmi belgelere bir bağlantı .

Şimdi sadece etiket başına 99 satıra kadar gösterme sınırlamasının aslında çoğu zaman iyi bir şey olduğunu düşünüyorum, eğer tek bir etiket için 99'dan fazla satır olsaydı, geri kalanını gerçekten görmek istemezsiniz. çizgiler olur mu? Etiket başına 99'dan fazla satır görmek istiyorsanız, bunu her zaman daha büyük bir sayıya yükseltebilirsiniz.

Ben masif etiket mesajları görmek istiyorum için belirli bir durum veya bir neden olabilir sanırım, ama hangi noktada demek yapmanız değil bütün mesajı görmek ister misin? 999'dan fazla çizgi olduğunda? 10.000? 1,000,000? Demek istediğim, kaç satır gördüğünüzde genellikle bir sınırın olması mantıklı ve bu sayı bunu ayarlamanıza izin veriyor.

Etiketlerinize bakarken genel olarak görmek istedikleriniz için bir tartışma yaptığımdan, muhtemelen böyle bir şeyi bir takma ad olarak ayarlamak mantıklıdır (aşağıdaki Iulian Onofrei'nin yorumundan):

git config --global alias.tags 'tag -n99'

Yani, git tag -n99etiketlerinizi her görmek istediğinizde gerçekten yazmak zorunda olmak istemiyor musunuz? Bu takma ad yapılandırıldıktan sonra, etiketlerinizi her görmek istediğinizde git tagsterminalinize yazmanız yeterlidir. Şahsen, işleri bundan bir adım daha ileri götürmeyi ve yaygın olarak kullanılan tüm komutlarım için daha da kısaltılmış bash takma adları oluşturmayı tercih ediyorum. Bu amaçla, .bashrc dosyanıza böyle bir şey ekleyebilirsiniz (Linux ve benzeri ortamlarda çalışır):

alias gtag='git tag -n99'

Ardından etiketlerinizi her görmek istediğinizde yazmanız yeterlidir gtag. Takma ad yoluna gitmenin bir başka avantajı (git takma adları veya bash takma adları veya her neyse), artık kişisel olarak nasıl etiketlediğinizi (genellikle sıralama gibi) istediğiniz gibi daha fazla özelleştirmeler ekleyebileceğiniz bir noktaya sahip olmanızdır. bunları aşağıdaki yorumumda olduğu gibi belirli şekillerde). İlk takma adınızı oluşturmanın zorluğunu aştığınızda, artık özelleştirilmiş bir şekilde çalışmayı sevdiğiniz diğer şeyler için daha fazla oluşturmanın ne kadar kolay olduğunu anlayacaksınız git log, ancak bunu farklı bir soru / cevap için kaydedelim .


3
git config --global alias.tags 'tag -n99'
Iulian Onofrei

@IulianOnofrei, güzel, git'in takma adları tanımlamanıza izin verdiğini bilmiyordum. Bunun konu dışı olduğunu anlıyorum, ama dayanamıyorum. Şu anda kullandığım şey bu (.bashrc veya benzeri bir şeye yerleştirilir):alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
still_dreaming_1

25

Mark Longair'in cevabı (kullanma git show) soruda istenen şeye yakındır. Bununla birlikte, etiketin işaret ettiği taahhüdü ve söz konusu taahhüdün tam yamasını da içerir. Taahhüt, etiketle bir şekilde alakasız olabileceğinden (etiketin yakalamaya çalıştığı tek bir taahhüt), bu istenmeyen bir durum olabilir. Aşağıdaki biraz daha güzel olduğuna inanıyorum:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

Mark'ın git şovu benim kullanımım için yamalar göstermedi. Komutu -p veya --patch'i atlar, ancak farkı atladığınızdan emin olmak için şunları kullanabilirsiniz: --no-patch. (git v2.7.1 / mac üzerinde)
AnneTheAgile

13

Güzel olmaktan uzak, ancak böyle bir şey yapan bir komut dosyası veya takma ad oluşturabilirsiniz:

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

Yerine bir sebebi var mı git for-each-ref refs/tags/ --format='%(refname)'ile git tag -l?
Shai Berger

@ShaiBerger: pratikte öyle düşünmüyorum - sanırım sadece git tagporselen olduğunu ve git for-each-refsu tesisatı olduğunu düşünüyordum , bu yüzden ikincisinin çıktısı komut dosyası için daha kararlı olmalıdır.
Mark Longair

10

Yalnızca son etiket mesajı:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

2
Google'dan buna olan herkes için: Belirli bir etiketten gelen mesajı göstermek istiyorsanız: git cat-file -p <tag> | tail -n +6
Kit Peters


2

Bunu komut satırında yapmayı tercih ediyorum, ancak bir web arayüzünü önemsemiyorsanız ve GitHub'ı kullanıyorsanız https://github.com/user/repo/tags, açıklamasını görüntülemek için her bir etiketin yanındaki "..." düğmesini tıklayabilir ve tıklayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.