Git-Protokoll einer einzelnen Revision


179

Ich habe ein Commit c. Ich möchte den Änderungssatz dieser genauen Commit-C + -Metainformation und keine andere erhalten. Gibt es einen einfacheren Weg als git log -p c^..cdas?

Antworten:



60

Die Antwort von Michal Trybus ist der Einfachheit halber die beste. Wenn Sie jedoch den Unterschied in Ihrer Ausgabe nicht möchten, können Sie immer Folgendes tun:

git log -1 -U c

Dadurch erhalten Sie das Festschreibungsprotokoll, und dann haben Sie die volle Kontrolle über alle Git-Protokollierungsoptionen für Ihre Automatisierungszwecke. In Ihrem Fall sagten Sie, Sie wollten das Änderungsset. Der am besten lesbare Weg, dies zu erreichen, wäre:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Wenn Sie eine Git-Version verwenden, die größer als 1.8.X ist, ist dies:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Dadurch erhalten Sie ähnliche Ergebnisse wie:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

Natürlich können Sie die Ereignisse herausfiltern, die Sie für richtig halten, und die Rückgabe nach Ihren Wünschen über die traditionellen Git-Log-Befehle formatieren, die hier gut dokumentiert sind .


14
Wenn Sie den Unterschied nicht wollen, tun Sie es git show --name-only <sha1>!
dbn

16
Wenn Sie den Diff einfach nicht wollen, verwenden Sie git show -s <commit>.
Moeffju

3
Was macht -1das Wo ist es dokumentiert?
Alex

1
@alex Siehe die Ausgabe von git help logim Abschnitt "Commit Limiting". Oder siehe git-scm.com/book/en/v2/… -<number> begrenzt die Anzahl der auszugebenden Commits.
LarsH

14

git log -p c -1 macht genau das.


4
Was macht -1? Wo ist es dokumentiert?
Alex

4
@alex: Das "-1" begrenzt die Anzahl der angezeigten Einträge auf die angegebene Anzahl, es ist eine Abkürzung für -n 1oder --max-number=1und wird hier dokumentiert .
Derpasaurus

0

Sie können Änderungen nach der Beschreibung des Commits filtern:

git log --grep='part_of_description' -p

wo git log --grep='part_of_description'die Commits auswählen , die ‚part_of_description‘ enthält und -pzeigen die changeset jeder begehen

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.