Verlauf oder Protokoll der in Git ausgeführten Befehle

95

Gibt es eine Möglichkeit, Befehle zu verfolgen, die ich in Git unter Windows verwendet habe? Ich möchte alle Befehle anzeigen, die ich auf mein Repository angewendet habe.

Ich möchte in der Lage sein, den Befehlsverlauf noch einmal durchzugehen und den Befehl herauszufinden, der das Problem verursacht hat, falls einer aufgetreten ist.

Es wäre eine Sache, den Verlauf von Commits zu sehen, aber um einen Verlauf anderer Aktionen wie das Erstellen eines Zweigs oder das Hinzufügen einer Fernbedienung zu führen, werden diese nachverfolgt?

nilMoBile
quelle
3
Dies ist ein wenig beiseite, aber wenn Sie hineinschauen .git/logs, sehen Sie den Verlauf des Commits, auf das jeder Zweig zeigt.
Nayuki
1
@Nayuki Da pushing den Status einer lokalen Niederlassung nicht ändert, werden sie refloganscheinend nicht gespeichert. Ein pushBlick in .git/logs/refs/remotes/*/*die Filiale ist daher die einzige Möglichkeit, Ihre pushGeschichte anzuzeigen .
Kyle Strand

Antworten:

-8

git zeigt Änderungen in Commits an, die sich auf den Index auswirken, z git rm. Es wird kein Protokoll aller von Ihnen ausgeführten Git-Befehle gespeichert.

Eine große Anzahl von Git-Befehlen wirkt sich jedoch in gewisser Weise auf den Index aus , z. B. beim Erstellen eines neuen Zweigs. Diese Änderungen werden im Festschreibungsverlauf angezeigt, mit dem Sie sie anzeigen könnengit log .

Es gibt jedoch destruktive Änderungen, die Git nicht verfolgen kann, wie z git reset.

Um Ihre Frage zu beantworten, speichert git keinen absoluten Verlauf von gitBefehlen, die Sie in einem Repository ausgeführt haben. Es ist jedoch häufig möglich, den von Ihnen ausgeführten Befehl über den Festschreibungsverlauf zu interpolieren.

Alex
quelle
2
Tatsächlich, wie eine Antwort unten zu Recht erwähnt, ist dies der Fall. "history" zeigt die Liste der ausgeführten Befehle (seit der Installation).
Umesh .A Bhat
2
Die Shell speichert die Geschichte, aber Git nicht, oder?
Alex
3
@UmeshABhat git historywäre nützlich, um beispielsweise zu sehen, welche Befehle in einem bestimmten Klon ausgeführt wurden .
Kyle Strand
5
git reflogist was du willst. Siehe Antwort unten.
Chéyo
3
@ cp.engr: Das OP fragt nach dem Verlauf von Git-Befehlen, nicht nach Git-Commits. Diese Antwort schlägt vor, die Befehle aus den Git-Commits abzuleiten, was sehr harte Arbeit ist und nicht immer möglich ist. git reflogzeigt tatsächlich die Befehle selbst. Übrigens ist die Shell nur ein etwas direkterer Weg, um auf die Git-Befehle zu schließen, aber ein Git-Repo kann von mehreren Shells berührt werden. Es ist besser, git zu fragen, welche Befehle verwendet wurden.
Kombinatorist
180

Sie können den Verlauf mit git-reflog sehen ( Beispiel hier ):

git reflog
jweyrich
quelle
18
@PauAI git reflog zeigt zwar alle Positionen an, denen Ihr HEAD gefolgt ist , zeigt jedoch nicht alle git-Befehle an. Git-Befehle, die den Kopf nicht bewegen (zum Beispiel git branch -D my_precious_branch), werden dort nicht angezeigt.
Yonatan
@ Yonatan, konntest du es nicht bekommen git reflog --all?
Kombinator
2
@combinatorist versuchen, eine Fernbedienung hinzuzufügen (wie das OP zum Beispiel gab) : git remote add foo bar. Es wird nicht in angezeigt git reflog --all, da der HEAD-Zeiger nicht geändert wird.
Yonatan
git reflogzeigt mir keine Befehle wie git statusaso., mit oder ohne --allParameter.
Lorenz
62

Ein Protokoll Ihrer Befehle ist möglicherweise in Ihrem Shell-Verlauf verfügbar.

history

Wenn Sie die Liste der ausgeführten Befehle nicht sehen möchten, exportieren Sie die Liste in eine Datei.

history > path/to/file

Sie können den exportierten Speicherauszug so einschränken, dass nur Befehle mit "git" angezeigt werden, indem Sie ihn mit grep weiterleiten

history | grep "git " > path/to/file

Der Verlauf kann als solche formatierte Zeilen enthalten

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

Mit der Nummer können Sie den Befehl mit einem Ausrufezeichen erneut ausführen

$ !518
git status -s
zufällig
quelle
8

Wenn Sie CentOS oder eine andere Linux-Variante verwenden, tun Sie einfach Ctrl+ Ran der Eingabeaufforderung und geben Sie ein git.

Wenn Sie weiterhin Ctrl+ Rdrücken, wird Ihr Verlauf in umgekehrter Reihenfolge nach Befehlen durchsucht, die mit beginnengit

crmpicco
quelle
7

Geben Sie historyIhr Terminal ein. Es ist technisch gesehen kein Idiot, aber ich denke, es ist das, was Sie wollen.

ScottyBlades
quelle
6

Wenn Sie Windows PowerShell verwenden, können Sie "git" eingeben und F8 drücken. Drücken Sie weiterhin F8, um alle Ihre Git-Befehle zu durchlaufen.

Oder wenn Sie Cygwin verwenden, können Sie dasselbe mit ^ R tun.

mamboking
quelle
In einer normalen Windows-Sitzung können Sie die Taste F7 verwenden, um ein kleines Fenster zu erhalten, in dem eine Liste aller in dieser Sitzung
eingegebenen
0

Ich habe herausgefunden, dass in meiner Version von git bash "2.24.0.windows.2" in meinem "home" -Ordner unter Windows-Benutzern eine Datei mit dem Namen ".bash-history" ohne Dateierweiterung in diesem Ordner vorhanden ist. Es wird erst erstellt, nachdem Sie die Bash beendet haben.

Hier ist mein Workflow:

  1. Geben Sie vor dem Beenden von bash "history >> history.txt" ein [ENTER]
  2. Beenden Sie die Bash-Eingabeaufforderung
  3. Halten Sie Win + R gedrückt, um das Befehlsfeld Ausführen zu öffnen
  4. Shell eingeben: Profil
  5. Öffnen Sie "history.txt", um zu bestätigen, dass mein Text hinzugefügt wurde
  6. Drücken Sie in einer neuen Zeile [F5], um einen Zeitstempel einzugeben
  7. Speichern und schließen Sie die Verlaufstextdatei
  8. Löschen Sie die Datei ".bash-history", damit in der nächsten Sitzung ein neuer Verlauf erstellt wird

Wenn Sie wirklich Punkte wollen, könnten Sie eine Batch-Datei erstellen, um all dies zu tun, aber das ist gut genug für mich. Hoffe es hilft jemandem.

user65795
quelle