Git-Protokoll zeigt nur eine Commit-ID an

77

Ich brauche Hilfe. Ist es möglich, nur eine Commit-ID anzuzeigen? Da git log -3 das Protokoll von 1 bis 3 anzeigt, möchte ich nur 3 anzeigen. Welcher mögliche Befehl passt dazu?

Ich benutze den Befehl

       git log -3 --pretty=format:"%h"

Das Ergebnis ist

       ffbef87
       cf0e073
       1c76c5d

Ich möchte nur den 1c76c5d anzeigen .

rkevx21
quelle

Antworten:

69

Sie können die git show Referenzierung des dritten übergeordneten Elements aus Ihrem aktuellen Commit (dh des zweiten Vorfahren von HEAD) verwenden. Außerdem git showübernimmt das gleiche Format - String wie git log:

git show HEAD~2 --pretty=format:"%h" --no-patch

Update ( 01.12.2016 )

Ein noch besserer Weg wäre die Verwendung des Installationsbefehls mit der Option, das abgekürzte (7 Zeichen) Commit SHA-1 auszugeben:rev-parse --short

git rev-parse --short HEAD~2

Sie können auch die genaue Länge des Commits SHA-1 angeben:

git rev-parse --short=4 HEAD~2
Enrico Campidoglio
quelle
Wenn ich git show head ~ 3 verwende --pretty = format: "% h" --no-patch, heißt es fatal: mehrdeutiges Argument 'HEAD ~ 3': unbekannte Revision oder Pfad nicht im Arbeitsbaum. Verwenden Sie '-', um Pfade von Revisionen wie
folgt
Könnte es sein, dass dies head~2das erste Commit in Ihrer Geschichte ist?
Enrico Campidoglio
Um auf das Commit in Ihrer Frage zu verweisen, müssen Sie verwenden head~2.
Enrico Campidoglio
1
@KasunSiyambalapitiya Da wird git showauch das mit dem Commit verbundene Diff ausgegeben (dh der Patch ), aber das interessiert uns in diesem Fall nicht.
Enrico Campidoglio
2
@GitSyncApp --no-patchunterdrückt die Diff-Ausgabe von git show.
Enrico Campidoglio
13

Dafür gibt es ein Werkzeug:

git log -3 --pretty=format:"%h" | tail -n 1

Sie können nZeichen des Hashs (anstelle des Standardzeichens) mit dem folgenden Flag einfügen:

--abbrev=n 

Relevante Teile der Unix-Philosophie

1) Lassen Sie jedes Programm eine Sache gut machen. Um einen neuen Job zu erledigen, erstellen Sie neue Programme neu, anstatt sie zu komplizieren, indem Sie neue "Funktionen" hinzufügen.

2) Erwarten Sie, dass die Ausgabe jedes Programms die Eingabe für ein anderes, noch unbekanntes Programm wird. Überladen Sie die Ausgabe nicht mit fremden Informationen. Vermeiden Sie streng spaltenförmige oder binäre Eingabeformate. Bestehen Sie nicht auf interaktiven Eingaben.

... [dh]

  • Schreiben Sie Programme, die eines tun und es gut machen.
  • Schreiben Sie Programme, um zusammenzuarbeiten.

https://en.wikipedia.org/wiki/Unix_philosophy

DylanYoung
quelle
8

Seit mindestens Git Version 2.3.8 können Sie die --skipOption verwenden:

   git log -1 --skip 2 --pretty=format:"%h"

Ich bin mir nicht sicher, welche früheren Versionen von Git unterstützt werden --skip.

Andy
quelle