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