Git-Tutorial: git log für Fortgeschrittene – Log-Output formatieren (Teil 2)

Der Sinn uns Zweck einer Versionskontrolle wie Git ist es, Änderungen am Projekt nachvollziehen zu können. Einer der mächtigsten Git-Befehle ist in diesem Zusammenhang git log. Er ermöglicht einerseits die passgenaue Formatierung der Log-Ausgabe und andererseits die spezifische Filterung von Commits. Im ersten Teil dieses Tutorials haben wir uns diverse Formatierungsmöglichkeiten angesehen. Darauf bauen wir auf und zeigen weitere Optionen.

Shortlog

Das Kommando git shortlog ist eine spezielle Version von git log, die den Zweck hat, Release-Ankündigungen zu erstellen. Es gruppiert alle Commits nach Autoren und zeigt die erste Zeile einer jeden Commit-Message an. So können wir einfach sehen, wer woran gearbeitet hat.

Wenn z.B. zwei Entwickler fünf Commits zu einem Projekt beigesteuert haben, könnte die Ausgabe von git shortlog in etwa so aussehen:

Mary (2):

     Fix a bug in the feature
     Fix a serious security hole in our framework

John (3):

     Add the initial code base
     Add a new feature
     Merge branch 'feature'

Per Voreinstellung sortiert git shortlog die Ausgabe nach Autorennamen. Wir können auch zusätzlich die Option -n nutzen, um eine Sortierung nach der Anzahl der Commits pro Autor vorzunehmen.

Graph

Die Option --graph erzeugt einen ASCII-Graphen, der die Branch-Struktur der Commit-Historie repräsentiert. Sie wird in der Regel zusammen mit --oneline und --decorate genutzt, um schnell zu sehen, welcher Commit zu welchem Branch gehört:

git log --graph --oneline --decorate

Für ein einfaches Repository mit nur zwei Branches erhalten wir dieses Ergebnis:

* 0e25143 (HEAD, master) Merge branch 'feature'
|\
| * 16b36c6 Fix a bug in the new feature
| * 23ad9ad Start a new feature
* | ad8621a Fix a critical security issue
|/
* 400e4b7 Fix typos in the documentation
* 160e224 Add the initial code base

Das Sternchen zeigt, in welchen Branch der Commit eingegangen ist, sodass uns der Graph sagt, dass die Commits 23ad9ad und 16b36c6 in einen Topic-Branch und die anderen in den master-Branch committet wurden.

Individuelle Formatierung

Für alle anderen Bedürfnisse in Sachen Formatierung können wir die Option –pretty=format:"<string>" nutzen. So können wir jeden Commit mithilfe von Platzhaltern im printf-Stil anzeigen.

Beispielsweise werden die Zeichenfolgen %cn, %h und %cd im folgenden Befehl respektive durch den Namen des Committers, den verkürzten Commit-Hash und den Commit-Zeitpunkt ersetzt:

git log --pretty=format:"%cn committed %h on %cd"

Als Ausgabe erhalten wir das folgende Format für jeden Commit:

John committed 400e4b7 on Fri Jun 24 12:30:04 2014 -0500
John committed 89ab2cf on Thu Jun 23 17:09:42 2014 -0500
Mary committed 180e223 on Wed Jun 22 17:21:19 2014 -0500
John committed f12ca28 on Wed Jun 22 13:50:31 2014 -0500

Eine vollständige Liste der Platzhalter findet sich auf der Anleitungsseite zu git log unter 'Pretty Formats'.

Übrigens ist die Option –pretty=format:"<string>" nicht nur hilfreich, um genau die Informationen anzuzeigen, die wir brauchen, sondern vor allem auch dann, wenn wir git log-Output in einen anderen Befehl integrieren wollen.

Im folgenden nächsten Teil dieses git log-Tutorials wenden wir uns dann den Filtermöglichkeiten zu.

Git und Stash effektiv und produktiv nutzen? Wir sind Ihr Partner!

Kennen Sie Stash, Atlassians Git-Repository-Managementsystem? Stash bietet eine zentrale Lösung zum Management des gesamten distributierten Codes: Hier kommen alle Git-Repositories im Unternehmen zusammen, hier finden Entwickler immer die letzte offizielle Version eines Projekts, hier können Projektverantwortliche Berechtigungen kontrollieren, um sicherzustellen, dass die richtigen Nutzer Zugriff auf den richtigen Code haben. Möchten Sie mehr erfahren? Wir sind offizieller Vertriebspartner von Atlassian und einer der größten Atlassian Experts Partner weltweit. Gerne unterstützen wir Sie bei der Evaluierung, Lizenzierung und Adaption von Stash.

Übrigens: //SEIBERT/MEDIA bietet auch professionelle Grundlagen- und Aufbau-Workshops zu Git und Atlassian Stash an.

Weiterführende Infos

99 Argumente für Stash als Git-Repository-Manager
Branch-basierte Git-Workflows mit Stash adaptieren
Echte Integration: Das Zusammenspiel von JIRA, Stash und Bamboo
Interview: Die Vorteile von Git in der Software-Entwicklung und die Möglichkeiten von Stash
So funktioniert die Lizenzierung von Atlassian-Produkten