Cetak pesan komit dari commit yang diberikan di git


244

Saya memerlukan perintah plumbing untuk mencetak pesan commit dari commit yang diberikan - tidak lebih, tidak kurang.


3
Jika ada yang datang ke sini mencari cara untuk mencetak pesan komit satu baris tetapi tidak peduli dengan hash yang muncul di awal, karya-karya berikut:git show -s --oneline <commit>
waldyrious

Di mana kita harus menambahkan baris untuk mencetak pesan komit di mesin server? Maksud saya file kait yang mana?

Apa yang Anda maksud dengan perintah "plumbing"?
Bryan Ash

Jawaban:


332

Ini bukan "plumbing", tetapi itu akan melakukan apa yang Anda inginkan:

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

Jika Anda benar-benar membutuhkan perintah "ledeng" (tidak yakin mengapa itu persyaratan), Anda dapat menggunakan rev-list:

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

Meskipun rev-listjuga akan mencetak komit sha (di baris pertama) di samping pesan komit.


4
Bekerja dengan sempurna untuk saya - tetapi saya menggunakan %s%bsebagai ganti %B(pada kotak Linux)
adamk

17
%Badalah specifier yang benar (setidaknya, di Git 1.7.2, tidak yakin kapan ditambahkan).
mipadi

2
%Bditambahkan sekitar 1,7.1 (mungkin dalam 1.7.1.1).
mipadi

1
Memang itu - Git 1.7.2 rupanya. Terima kasih banyak!
Mark Probst

Anda juga dapat menggunakan: $ git log --format=%B -n 1 <commit> | cat -Itu akan memberi Anda pesan komit dan tidak ada komit, dan Anda dapat "menyalurkan" itu. Saya sebenarnya menggunakan ini sebagai bagian dari skrip CI saya.
Paulo Muñoz

138

git showlebih merupakan perintah plumbing daripada git log, dan memiliki opsi format yang sama:

git show -s --format=%B SHA1

9
Dan jika Anda hanya menginginkan baris pertama ("subjek"), gunakan %ssebagai ganti %B.
ntc2

13
(Saya lebih suka ini daripada jawaban "log" atau "rev-list" yang diterima, karena ini adalah operasi komit tunggal, daripada daftar yang dibatasi pada 1 entri.)
Rich

17

Bukan pipa ledeng, tapi saya punya ini di .gitconfig saya:

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

Itu "ringkasan terakhir" dan "pesan terakhir". Anda dapat memberikan komit untuk mendapatkan ringkasan atau pesan dari komit itu. (Saya menggunakan 1.7.0.5 jadi tidak memiliki% B.)


Anda bisa melewatkan argumen -n sebagai parameter. Jadi, alih-alih hanya mengembalikan komit terakhir, Anda dapat membuatnya untuk mengembalikan 5 komit terakhir. Di sini diperlukan perubahan lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Ditemukan di sini stackoverflow.com/questions/7005513/... Anda cukup menjalankan git lsum 5 ini
kuklei

15

Ini akan memberi Anda daftar yang sangat ringkas dari semua pesan untuk waktu tertentu.

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

4

Saya mulai menggunakan

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

Tampaknya lebih cepat daripada

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

Keduanya memberikan hasil yang sama


1
Itu menunjukkan baris pertama saja (% s), bukan keseluruhan pesan komit ("tidak lebih, tidak kurang", seperti yang ditulis penanya). Jika Anda memiliki cara melakukan show-branch dengan% B, maka itu akan sangat membantu.
Canonical Chris

3

Saya menggunakan shortlog untuk ini:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.