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.