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.