Git'te verilen bir taahhüdün taahhüt mesajını yazdır


244

Verilen bir taahhüdün taahhüt mesajını yazdırmak için bir tesisat komutuna ihtiyacım var - başka bir şey, daha az bir şey.


3
Birisi buraya tek satırlık bir taahhüt mesajı yazdırmanın bir yolunu arıyor ancak başlangıçta ortaya çıkan karmayı umursamıyorsa, aşağıdakiler işe git show -s --oneline <commit>
yarar

Sunucuyu sunucu makinesinde yazdırmak için satırı nereye eklemeliyiz? Hangi kanca dosyasını kastediyorum?

"Sıhhi tesisat" komutuyla ne demek istiyorsun?
Bryan Ash

Yanıtlar:


332

"Sıhhi tesisat" değil, tam olarak ne istediğinizi yapar:

$ git log --format=%B -n 1 <commit>

Kesinlikle bir "sıhhi tesisat" komutuna ihtiyacınız varsa (bunun neden bir gereksinim olduğundan emin değilseniz) şunları kullanabilirsiniz rev-list:

$ git rev-list --format=%B --max-count=1 <commit>

Her ne kadar rev-listtaahhüt mesajına ek olarak taahhüt sha (ilk satırda) da yazdıracaktır.


4
Benim için mükemmel çalıştı - ama (Linux kutusunda) %s%byerine kullandım%B
adamk

17
%Bdoğru bir tanımlayıcıdır (en azından Git 1.7.2'de ne zaman eklendiğinden emin değilsiniz).
mipadi

2
%B1.7.1'den bir süre sonra eklendi (muhtemelen 1.7.1.1'de).
mipadi

1
Gerçekten de öyle - Git 1.7.2 görünüşte. Muchas gracias!
Mark Probst

Ayrıca kullanabilirsiniz: $ git log --format=%B -n 1 <commit> | cat -Bu size taahhüt mesajı verecektir ve hiçbir taahhüt sha, ve "boru" yapabilirsiniz. Aslında bunu CI betiğimin bir parçası olarak kullanıyorum.
Paulo Muñoz

138

git showbir tesisat komutudur git logve aynı biçimlendirme seçeneklerine sahiptir:

git show -s --format=%B SHA1

9
Ve sadece ilk satırı ("konu") istiyorsanız, %syerine kullanın %B.
ntc2

13
(Bunu kabul edilen "günlük" veya "rev-list" yanıtına tercih ederim, çünkü 1 girişle sınırlı bir liste yerine tekli bir işlemdir.)
Zengin

17

Sıhhi tesisat değil, ama .gitconfig dosyamda bunlar var:

lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'

Bu "son özet" ve "son mesaj". Söz konusu taahhüdün özetini veya mesajını almak için bir taahhüt verebilirsiniz. (1.7.0.5 kullanıyorum, bu yüzden% B'ye sahip olmayın.)


-N argümanını parametre olarak iletebilirsiniz. Yani sadece son taahhüt yerine geri dönmek için son 5 taahhüt geri yapabilirsiniz. Burada gerekli değişiklik lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Burada buldum stackoverflow.com/questions/7005513/… Bu git lsum 5
kuklei

15

Bu, belirli bir süre için tüm mesajların çok kompakt bir listesini verecektir.

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

4

Kullanmaya başladım

git show-branch --no-name <hash>

Daha hızlı görünüyor

git show -s --format=%s <hash>

Her ikisi de aynı sonucu verir


1
Bu sadece ilk satırı (% s) gösterir, tüm taahhüt mesajını göstermez ("başka hiçbir şey, hiçbir şey daha az", yazdığı gibi). % B ile gösteri dalı yapmanın bir yolu varsa, bu yardımcı olacaktır.
Canonical Chris

3

Bunun için kısa blog kullanıyorum:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
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.