Aufgeschlagenes Buch mit Git-Branch und Cloud

Git-show

Was ist git-show?

git-show ist ein Befehlszeilen-Dienstprogramm, mit dem erweiterte Details zu Git-Objekten wie Blobs, Strukturen, Tags und Commits angezeigt werden können. git-show zeigt je nach Objekttyp ein spezifisches Verhalten.

Tags zeigen die Tag-Nachricht und andere im Tag enthaltene Objekte an. Strukturen zeigen die Namen und den Inhalt von Objekten in einer Struktur an. Blobs zeigen den direkten Inhalt des Blobs an. Commits zeigen eine Commit-Protokollnachricht an sowie eine Diff-Ausgabe zu den Änderungen im Commit.

Auf alle Git-Objekte kann über Referenzen zugegriffen werden. Standardmäßig bezieht sich git-show auf die HEAD-Referenz. Die HEAD-Referenz zeigt stets auf den letzten Commit des aktuellen Branch. Daher kannst du mithilfe von git-show die Protokollnachricht und die Diff-Ausgabe des letzten Commit anzeigen.

Git-show – Optionen

<object>…
Eine Referenz auf ein Objekt oder eine Liste von Objekten kann übergeben werden, um diese spezifischen Objekte zu untersuchen. Wenn keine expliziten Objekte übergeben werden, wird git-show standardmäßig auf die HEAD Referenz gesetzt.

--pretty[=<format>]
Die Option --pretty nimmt einen der folgenden Sekundärformatwerte an: oneline, short, medium, full, fuller, email, raw oder format:<string>. Andernfalls wird das Format standardmäßig auf medium gesetzt. Jede Formatoption ist eine unterschiedliche Vorlage und zeigt, wie Git die Anzeigeausgabe formatiert. Die Option <code>oneline</code> eignet sich für die Anzeige einer Liste von Commits.

--abbrev-commit
Diese Option verkürzt die Länge der Ausgabe-Commit-IDs. Commit-IDs bestehen aus 40 Zeichen und lassen sich schlecht auf schmalen Terminal-Bildschirmen lesen. Diese Option in Kombination mit --pretty=oneline erzeugt eine komprimierte git log-Ausgabe.

--no-abbrev-commit
Zeigt stets die 40 Zeichen lange Commit-ID an. Ignoriert damit --abbrev-commit und andere Optionen, die Commit-IDs abkürzen wie --oneline format

--oneline
Es handelt sich um ein Kürzel für die Verwendung des erweiterten Befehls --pretty=oneline --abbrev-commit

--encoding[=<encoding>]
Die Zeichenkodierung in Git-Protokollnachrichten wird standardmäßig auf UTF-8 gesetzt. Die Kodierungsoption kann zu einer anderen Zeichenkodierungsausgabe wechseln. Das ist sinnvoll, wenn du mit Git in einer Umgebung mit verschiedenen Zeichenkodierungen arbeitest, wie das asiatische Sprachterminal.

>--expand-tabs=<n>
--expand-tabs
--no-expand-tabs

Diese Optionen ersetzen in der Protokollnachricht die Tabulatorzeichen durch Leerzeichen. Über den Wert n kannst du festlegen, auf wie viele Leerzeichen die Tabulatoren erweitert werden sollen. Ohne eine explizite Angabe des n-Werts werden die Tabulatorzeichen auf 8 Leerzeichen erweitert. --no-expand-tabs entspricht n=0

--notes=<ref>
--no-notes

Git verfügt über ein Notizsystem, bei dem beliebige Notiz-Metadaten an Objekte angehängt werden können. Diese Daten kannst du bei der Verwendung von git-show ausblenden oder filtern. 

--show-signature
Diese Option überprüft, ob das Commit mit einer verschlüsselten Signatur unterzeichnet ist, indem sie es an einen gpg-Unterbefehl weitergibt.

Pretty-Formate für git-show

Die oben erläuterte Option --pretty akzeptiert verschiedene Sekundäroptionen, um das Format der git-show-Ausgabe zu formulieren. Diese Sekundäroptionen werden im Folgenden mit Beispielvorlagen aufgelistet.

  • oneline
    <sha1> <title line>

Oneline versucht so viele Informationen wie möglich in einer einzelnen Zeile zu komprimieren.

  • short
    commit <sha1>
    Author: <author>
    <title line>
  • medium
    commit <sha1>
    Author: <author>
    Date: <author date>
    <title line>
    <full commit message>
  • full
    commit <sha1>
    Author: <author>
    Commit: <committer>
    <title line>
    <full commit message>
  • fuller
    commit <sha1>
    Author: <author>
    AuthorDate: <author date>
    Commit: <committer>
    CommitDate: <committer date>
    <title line>
    <full commit message>
  • email
    From <sha1> <date>
    From: <author>
    Date: <author date>
    Subject: [PATCH] <title line>
    <full commit message>
  • raw
    Das Format raw ignoriert andere direkte Formatierungsoptionen, die an git-show übergegeben werden, und gibt den Commit genau so aus, wie er im Objekt gespeichert ist. Raw übergeht --abrev und --no-abbrev und zeigt stets die übergeordneten Commits an.
  • format:
    format aktiviert die Spezifizierung eines benutzerdefinierten Ausgabeformats. Der Befehl funktioniert ähnlich wie der Befehl printff der Programmiersprache C. Die Option --pretty=format nimmt einen sekundären Wert einer Vorlagezeichenfolge an. Die Vorlage hat Zugriff auf Platzhaltervariablen, die mit Daten vom Commit-Objekt gefüllt werden. Diese Platzhalter werden im Folgenden aufgelistet:

    %H: Commit-Hash
    %h: abgekürzter Commit-Hash
    %T: Baum-Hash
    %t: abgekürzter Baum-Hash
    %P: übergeordnete Hashes
    %p: abgekürzte übergeordnete Hashes
    %an: Name des Autors
    %aN: Name des Autors 
    %ae: E-Mail des Autors
    %aE: E-Mail des Autors 
    %ad: Datum des Autors (laut Format: --date= Option)
    %aD: Datum des Autors, RFC2822-Format
    %ar: Datum des Autors, relativ
    %at: Datum des Autors, UNIX-Zeitstempel
    %ai: Datum des Autors, ISO 8601-Format
    • %cn: Committer-Name
    %cN: Committer-Name 
    %ce: Committer-E-Mail
    %cE: Committer-E-Mail 
    %cd: Committer-Datum
    %cD: Committer-Datum, RFC2822-Format
    %cr: Committer-Datum, relativ
    %ct: Committer-Datum, UNIX-Zeitstempel
    %ci: Committer-Datum, ISO 8601-Format
    %d: Referenznamen wie die Option --decorate von git-log(1)
    %e: Verschlüsselung
    %s: Betreff
    %f: korrigierte Betreffzeile, geeignet für einen Dateinamen
    • %b: Hauptteil
    %N: Commit-Notizen
    %gD: Reflog-Bereich, z. B. refs/stash@{1}
    %gd: gekürzter Reflog-Bereich, z. B. stash@{1}
    %gs: Reflog-Betreff
    %Cred: zur Farbe Rot wechseln
    %Cgreen: zur Farbe Grün wechseln
    %Cblue: zur Farbe Blau wechseln
    %Creset: Farbe zurücksetzen
    %C(...): Farbvorgabe wie unter der Konfigurationsoption color.branch.* beschrieben
    %m: linke, rechte oder Grenzmarkierung
    %n: neue Zeile
    %%: ein Raw-Wert in %
    %x00: Byte von Hexadezimalcode drucken
    %w([<w>[,<i1>[,<i2>]]]): Zeilenumbruch umschalten, wie die Option "-w" von git-shortlog

Beispiele für git-show

git show --pretty="" --name-only bd61ad98

Dies listet alle Dateien auf, die von einem Commit betroffen waren.

git show REVISION:path/to/file

Dies zeigt eine spezifische Version einer Datei an. Ersetze die REVISON durch einen Git SHA.

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

Dies zeigt den v2.0.0-Tag an und führt einen Commit bei 6ef002d74cbbc099e1063728cab14ef1fc49c783 durch.

git show commitA...commitD

Dies gibt alle Commits im Bereich von commitA bis commit D aus.

Zusammenfassung

git-show ist ein sehr vielseitiger Befehl zur Untersuchung von Objekten in einem Git-Repository. Er eignet sich dazu, spezifische Dateien bei spezifischen Überarbeitungen zu berücksichtigen. Bei der Überprüfung eines Commit-Bereichs mit git-show wird jedes einzelne Commit im Bereich ausgegeben. Mit git-show können außerdem Patch-Hinweise und das Verfolgen von Änderungen in einem Repository erstellt werden.