Git-Tutorial: git log für Fortgeschrittene – Commit-Historie filtern (Teil 1)

Zu formatieren, wie Commits angezeigt werden sollen, ist erst die Hälfte dessen, was wir mit git log Sinnvolles tun können (siehe Teil 1 und Teil 2 des git log-Tutorials). Die andere Hälfte besteht darin zu verstehen, wie wir durch die Commit-Historie navigieren. Also werden wir nun einige Möglichkeiten für Fortgeschrittene besehen, um mit git log spezifische Commits aus unserer Projekthistorie herauszusuchen. Die Kombination mit den Formatierungsoptionen ist dabei jederzeit möglich.

Nach Anzahl

Die einfachste Filtermöglichkeit für git log ist die, die Anzahl der anzuzeigenden Commits zu begrenzen. Wenn uns nur die letzten paar Commits interessieren, ist das hilfreich.

Die Ausgabe können wir mit der Option -<n> limitieren. Der folgende Befehl gibt beispielsweise die letzten drei Commits aus:

git log -3

Nach Datum

Wenn wir nach einem Commit suchen, der in einem bestimmten Zeitfenster committet wurde, stehen uns die Optionen --after und --before zur Verfügung, um Commits nach Daten einzugrenzen. Beide Optionen akzeptieren diverse Datumsformate als Parameter. Der folgende Befehl zeigt z.B. alle Commits, die ab dem 1. Juli 2015 erstellt wurden:

git log --after="2015-7-1"

Wir können auch relative Referenzen wie "1 week ago" und "yesterday" nutzen:

get log --after="yesterday"

Um einen Commit such suchen, der zwischen zwei Daten erstellt wurde, können wir mit beiden Optionen arbeiten, also mit --before und --after. Einen zwischen dem 1. und dem 4. Juli 2015 hinzugefügten Commit suchen wir so:

git log --after="2015-7-1" --before="2015-7-4"

Hinweis: Die Optionen --since und --until sind synonym zu --after und --before.

Nach Autor

Möchten wir nur nach Commits eines bestimmten Nutzers suchen, können wir auf die Option --author zurückgreifen. Sie akzeptiert einen regulären Ausdruck und gibt alle Commits aus, deren Autor auf dieses Muster passt. Wenn wir genau wissen, nach wem wir suchen, können wir statt eines regulären Ausdrucks einen einfachen String nutzen:

git log --author="John"

Damit zeigen wir alle Commits an, deren Autoren den Namen John beinhalten.

Für komplexere Suchen greifen wir wie gesagt auf reguläre Ausdrücke zurück. Der folgende Befehl gibt alle Commits aus, die entweder von Mary oder von John hinzugefügt wurden:

git log --author="John\|Mary"

Statt nach Klarnamen können wir auch nach E-Mail-Adressen filtern.

Sofern unser Workflow zwischen Committern und Autoren unterscheidet: Die Option --committer funktioniert auf die gleiche Weise.

Nach Commit-Message

Um Commits nach ihrer Commit-Message zu filtern, bietet sich die Option --grep an. Sie funktioniert wie die Option --author, sucht aber Übereinstimmungen mit der Commit-Nachricht statt mit dem Autorennamen.

Wenn unser Team z.B. relevante Vorgangskürzel in Commit-Messages verwendet, können wir mit der folgenden Abfrage alle Commits anzeigen, die mit diesem Vorgang zusammenhängen:

git log --grep="JRA-224:"

Weitere Filterwerkzeuge für git log diskutieren wir im folgenden letzten Teil des Tutorials.

Git und Bitbucket Server effektiv nutzen? Wir sind Ihr Partner!

Kennen Sie Bitbucket Server (vormals Stash), Atlassians Git-Repository-Managementsystem? Bitbucket Server 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 Bitbucket Server.

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

Weiterführende Infos

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