Commit-Nachricht eines bestimmten Commits in git drucken


243

Ich benötige einen Installationsbefehl, um die Festschreibungsnachricht eines bestimmten Festschreibungsvorgangs zu drucken - nicht mehr und nicht weniger.


3
Wenn jemand hierher kommt, um nach einer Möglichkeit zu suchen, eine einzeilige git show -s --oneline <commit>
Festschreibungsnachricht

Wo sollen wir die Zeile zum Drucken der Festschreibungsnachricht auf dem Server hinzufügen? Ich meinte welche Hook-Datei?

Was meinst du mit "Sanitär" Befehl?
Bryan Ash

Antworten:


332

Es ist kein "Sanitär", aber es wird genau das tun, was Sie wollen:

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

Wenn Sie unbedingt einen "Sanitär" -Befehl benötigen (nicht sicher, warum dies erforderlich ist), können Sie Folgendes verwenden rev-list:

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

Zwar rev-listwird zusätzlich zur Commit-Nachricht auch das Commit sha (in der ersten Zeile) ausgedruckt.


4
Hat perfekt für mich %s%b%B
funktioniert

17
%Bist ein korrekter Bezeichner (zumindest in Git 1.7.2 nicht sicher, wann er hinzugefügt wurde).
Mipadi

2
%Bwurde irgendwann nach 1.7.1 hinzugefügt (wahrscheinlich in 1.7.1.1).
Mipadi

1
In der Tat ist es - Git 1.7.2 anscheinend. Vielen Dank!
Mark Probst

Sie können auch Folgendes verwenden: $ git log --format=%B -n 1 <commit> | cat -Dadurch erhalten Sie die Festschreibungsnachricht und keine Festschreibungsnachricht, und Sie können sie "weiterleiten". Ich verwende dies tatsächlich als Teil meines CI-Skripts.
Paulo Muñoz

137

git showist eher ein Installationsbefehl als git logund hat die gleichen Formatierungsoptionen:

git show -s --format=%B SHA1

9
Und wenn Sie nur die erste Zeile ("Betreff") möchten, verwenden Sie %sstattdessen %B.
ntc2

13
(Ich ziehe dies der akzeptierten Antwort "log" oder "rev-list" vor, da es sich um eine Single-Commit-Operation handelt und nicht um eine Liste, die auf 1 Eintrag beschränkt ist.)
Rich

17

Keine Klempnerarbeiten, aber ich habe diese in meiner .gitconfig:

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

Das sind "letzte Zusammenfassung" und "letzte Nachricht". Sie können ein Commit bereitstellen, um die Zusammenfassung oder Nachricht dieses Commits abzurufen. (Ich verwende 1.7.0.5, habe also kein% B.)


Sie können das Argument -n als Parameter übergeben. Anstatt nur das letzte Commit zurückzugeben, können Sie die letzten 5 Commits zurückgeben. Hier ist die Änderung notwendig lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Fand es hier stackoverflow.com/questions/7005513/… Sie führen dieses Git lsum 5
kuklei

15

Dadurch erhalten Sie eine sehr kompakte Liste aller Nachrichten für eine bestimmte Zeit.

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

4

Ich fing an zu benutzen

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

Es scheint schneller zu sein als

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

Beide ergeben das gleiche Ergebnis


1
Das zeigt nur die erste Zeile (% s), nicht die gesamte Festschreibungsnachricht ("nicht mehr und nicht weniger", wie der Fragesteller schrieb). Wenn Sie eine Möglichkeit haben, einen Show-Branch mit% B durchzuführen, ist dies hilfreich.
Canonical Chris

3

Ich benutze dafür Shortlog:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.