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?

Zedoo
quelle

Antworten:

266

Sie können verwenden show:

git show commit_id
Michał Trybus
quelle
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 <[email protected]>
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 .

SuperFamousGuy
quelle
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.

Robert Munteanu
quelle
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

Natigon
quelle