Git-Befehl zum Anzeigen der HEAD-Commit-ID?

250

Mit welchem ​​Befehl kann ich die Commit-ID von HEAD ausdrucken?

Das mache ich von Hand:

$ cat .git/HEAD
ref: refs/heads/v3.3
$ cat .git/refs/heads/v3.3
6050732e725c68b83c35c873ff8808dff1c406e1

Ich benötige jedoch ein Skript, das die Ausgabe eines Befehls zuverlässig an eine Textdatei weiterleiten kann, sodass die Textdatei genau die Festschreibungs-ID von HEAD enthält (nicht mehr oder weniger und nicht nur eine Referenz). Kann jemand helfen?

Andrew Arnott
quelle
Ich habe vorher eine ähnliche Frage. Und es wurde hier gut beantwortet: stackoverflow.com/questions/44994626/…
smwikipedia

Antworten:

450

Verwenden Sie den Befehl:

git rev-parse HEAD

Für die Kurzversion:

git rev-parse --short HEAD
Randal Schwartz
quelle
34
Für alle, die nach der Kurzversion des Hash suchen, git rev-parse --short HEADwird es funktionieren.
mgarciaisaia
45
git log -1

für nur Commit-ID

git log | head -n 1 
cyb0k
quelle
Danke, es ist einfach
eC Droid
15

Alter Thread, noch zum späteren Nachschlagen ... :) auch folgende Arbeiten

git show-ref --head

Standardmäßig wird HEAD herausgefiltert. Seien Sie jedoch vorsichtig, wenn Sie folgen. Plural "Köpfe" mit einem 's' am Ende. Der folgende Befehl zeigt Zweige unter "refs / Heads".

 git show-ref --heads
Abhijit Mazumder
quelle
4
Mit diesen Befehlen in einem (großen) Git-Repo erhalte ich zwei Zeilen von git show-ref --headsund 6290 Zeilen von git show-ref --head. Wenn Sie also nur einen einzigen Hash möchten, führt dies möglicherweise nicht zum beabsichtigten Ergebnis.
Remigius Stalder
7

Sie können git logOptionen angeben , um nur das letzte Commit anzuzeigen, -1und ein Format, das nur die Commit-ID enthält, wie folgt:

git log -1 --format=%H

Wenn Sie die verkürzte Commit-ID bevorzugen:

git log -1 --format=%h

JotaBe
quelle
5

Spiel mit Bash:

git show HEAD | sed -n 1p | cut -d " " -f 2
Ali Moreno
quelle
1

Laut https://git-scm.com/docs/git-log können Sie für eine schönere Ausgabe in der Konsole das Argument --decorate des Befehls git-log verwenden :

git log --pretty=oneline --decorate

wird drucken:

2a5ccd714972552064746e0fb9a7aed747e483c7 (HEAD -> master) New commit
fe00287269b07e2e44f25095748b86c5fc50a3ef (tag: v1.1-01) Commit 3
08ed8cceb27f4f5e5a168831d20a9d2fa5c91d8b (tag: v1.1, tag: v1.0-0.1) commit 1
116340f24354497af488fd63f4f5ad6286e176fc (tag: v1.0) second
52c1cdcb1988d638ec9e05a291e137912b56b3af test
Ilya Slyisarenko
quelle
0

git rev-parse --abbrev-ref HEAD

Avdhut Mankavale
quelle
1
Hier wird keine Festschreibungs-ID angezeigt, sondern alle mit dem Festschreiben verknüpften Namen (wie Zweige oder Tags). Dies ist nicht das, was der ursprüngliche Benutzer wollte.
Asfand Qazi
0

Sie können diesen Befehl verwenden

$ git rev-list HEAD

Sie können auch den headUnix-Befehl verwenden, um die neuesten n HEADCommits wie anzuzeigen

$ git rev-list HEAD | head - 2

medmik
quelle
0

Sie können verwenden

git log -g branchname

um git reflogInformationen zu sehen , die wie die git logAusgabe formatiert sind

Stuti Verma
quelle