Ich versuche, das Format für anzupassen git log
. Ich möchte, dass alle Commits in einer Zeile angezeigt werden. Jede Zeile sollte nur die erste Zeile der Festschreibungsnachricht anzeigen.
Ich habe herausgefunden, dass git log --pretty=short
dies der Trick sein sollte, aber auf meinem Computer wird das vollständige Protokoll genauso git log
angezeigt (außer dem Zeitstempel).
Außerdem habe ich versucht, die in der Manpage definierten Platzhalter zu verwenden . Ich konnte jedoch keinen Befehl zum Verkürzen der Protokollnachricht finden. Ich habe diese Zeile ausprobiert, git log --pretty=format:'%h : %s'
die den kurzgeschlossenen Hash %h
und die vollständige Nachricht %s
in einer Zeile anzeigt .
Ich benutze git version 1.7.3.1.msysgit.0
unter Vista.
Vielleicht hat es etwas damit zu tun, wie ich meine Commit-Nachrichten schreibe. Hier ist ein Beispiel:
Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.
Mit dem angegebenen Beispiel möchte ich nur eine Ausgabe vor Added some functionality.
dem Shortend-Hash erhalten.
%s
ist der Betreff, nicht die vollständige Nachricht.short
Format ist jedoch nicht alles in einer Zeile (Überraschung!)oneline
. Wennoneline
und%h : %s
nicht was Sie wollen, was ist mit ihnen los? Insbesondere%s
ist der Betreff die erste Zeile der Festschreibungsnachricht. Das sollte in der Tat eine verkürzte Version sein. Ist es möglich, dass Sie Commits mit einer einzigen langen Zeile für die Nachricht gemacht und diese irgendwie mit Zeilenumbruch angezeigt haben?oneline
und%s
nicht ausgeben , was wir erwarten, zumindest auf meinem Computer. Ich habe meinen Beitrag mit einem Beispiel für meine Commit-Nachricht aktualisiert. Vielleicht hilft es.Antworten:
Hast du das versucht?
Das Problem ist wahrscheinlich, dass nach der ersten Zeile eine leere Zeile fehlt. Der obige Befehl funktioniert normalerweise für mich, aber ich habe gerade ein Commit ohne leere zweite Zeile getestet. Ich habe das gleiche Ergebnis wie Sie: die ganze Nachricht in einer Zeile.
Die leere zweite Zeile ist ein Standard in Git-Commit-Nachrichten. Das angezeigte Verhalten wurde wahrscheinlich absichtlich implementiert.
Die erste Zeile einer Festschreibungsnachricht soll eine kurze Beschreibung sein. Wenn Sie es nicht in einer einzigen Zeile schaffen, können Sie mehrere verwenden, aber git betrachtet alles vor der ersten leeren Zeile als "Kurzbeschreibung".
oneline
druckt die gesamte Kurzbeschreibung aus, also alle 3 Zeilen.quelle
git log
an ein Filterskript weiterleiten, aber ich würde wirklich empfehlen, eine kurze Beschreibung mit einer leeren Zeile zu schreiben.git log --oneline
--oneline ist eine integrierte Abkürzung für "--pretty = oneline --abbrev-commit", die zusammen verwendet wird.cut
. Das wäreawk
Ward ... (Übrigens Mathe F: Wie hoch ist die Wahrscheinlichkeit, dass das nächste Bit in einer ordnungsgemäß codierten Huffman-Sequenz auf Speicherebene ein- oder ausgeschaltet ist? Hinweis: Es ist === 50%.)%
für hinzugefügt'%s'
. C-;Macht
git log --oneline
was du willstquelle
Besseres und einfacheres Git-Protokoll durch Erstellen eines Alias . Fügen Sie den folgenden Code nur einmal für eine Sitzung in das Terminal ein. Fügen Sie den Code in das zshrc- oder bash-Profil ein, um ihn dauerhaft zu machen.
Ausgabe
Geänderte Zeilen ausgeben
Alternativ (empfohlen)
Fügen Sie diesen Code in die globale .gitconfig-Datei ein
Weiterführende Literatur.
https://coderwall.com/p/euwpig/a-better-git-log
Erweiterte Lesung.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
quelle
git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1
. Sie können -p an diese Fledermausdatei übergeben, um auch geänderte Zeilen zu erhaltenDadurch wird nur die Nachricht (nur Betreffzeile) ohne Hash ausgedruckt :
quelle
%s
für das Thema;%b
für den Körper;%B
für beide ("roher Körper" in git-scm.com/docs/pretty-formats )Sie können einen globalen Alias definieren, um ein kurzes Protokoll auf bequemere Weise aufzurufen:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Dann können Sie es mit aufrufen
git slog
(es funktioniert sogar mit automatischer Vervollständigung, wenn Sie es aktiviert haben).quelle
Ohne Commit-Nachrichten nur der Hash:
quelle
git log --pretty=format:"%H"
git rev-list HEAD
.Wenn Sie immer so verwenden möchten,
git log
können Sie den Git-Alias von hinzufügengit config --global alias.log log --oneline
Danach
git log
wird gedruckt, was normalerweise von gedruckt wirdgit log --oneline
quelle
"log --oneline"
).