Wie erstelle ich ein Git-Commit-Protokoll für den letzten Monat und exportiere es als CSV?


73

Gibt es eine Möglichkeit, ein Git-Commit-Protokoll für den letzten Monat zu erstellen und es als CSV-Datei zu exportieren? Ich suche nach etwas, das ich über die Befehlszeile ausführen kann, oder nach einer App eines Drittanbieters. Ich möchte die folgenden Spalten: Autor, Datum des Festschreibens, Betreff, bearbeitete Datei und Hash.

Antworten:


116

Sie können beispielsweise die Option --sinceund verwenden --prettyvon git log:

git log --since="last month" --pretty=format:'%h,%an,%ar,%s' > log.csv

Weitere Optionen finden Sie im Abschnitt PRETTY FORMATS der Git-Protokoll-Manpage .


1
Funktioniert perfekt! Vielen Dank. Gibt es eine Möglichkeit, (in einer separaten Spalte) anzugeben, welche Datei betroffen / bearbeitet wurde?
Justin Jackson

2
Dies ist schwieriger, da im Allgemeinen mehr als eine Datei von einem Commit betroffen ist. Möchten Sie eine Zeile für Datei (also mehrere Zeilen für dasselbe Commit) oder eine (durch Semikolons getrennte?) Liste der pro Commit betroffenen Dateien? In jedem Fall wird dies ein Shell-Skript beinhalten, denke ich.
Simon

1
Das ist nett. Aber gibt es auch eine Option für den letzten Monat vom 1. bis zum letzten Tag?
Hugo der Hungrige

7
Das Hinzufügen von Anführungszeichen würde die CSV-Ausgabedatei verbessern, wenn die Festschreibungsnachrichten Kommas enthalten. "% h", "% an", "% ar", "% s"
dwenaus

Das Ergebnis für mich hat das folgende Format:Commit-ID,User,x hours ago,first line of commit message
Testen

38

Dieser Befehl erstellt eine formatierte CSV, die Hash, Benutzer, Datum / Uhrzeit, Beschreibung, geänderte Dateien, Einfügungen und Löschungen enthält

git log --pretty=format:'"%h","%an","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv

2
Merge Commits haben die Ausgabe für mich durcheinander gebracht und den --no-mergesParameter hinzugefügt, der dabei geholfen hat. Ich habe auch %x09ein Tabulatortrennzeichen anstelle eines Kommas für die Commit-Texte verwendet, die Kommas enthalten.
Emmanuel Touzery

6

Wenn Sie einen Datumsbereich anwenden möchten, fügen Sie - nach oder - vor in diesem Format "yyyy-mM-d" hinzu.

git log --before="2016-12-1" --pretty=format:'"%h","%an","%ae","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv
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.