Wie kann ich zum letzten Commit im Verlauf zurückkehren, nachdem ich „Git Reset“ verwendet habe, um zu einem älteren Änderungssatz zu wechseln?

StackOverflow https://stackoverflow.com/questions/2540505

  •  23-09-2019
  •  | 
  •  

Frage

Angenommen, meine Geschichte geht so:

A - B - C - D (Master)

Wenn ich mache git reset B, ich bekomme:

A - B (Meister)

Das Problem ist, git log Zeigt mir jetzt nur noch die Geschichte von A nach B, und ich kann C und D nicht mehr sehen.

Wie kann ich zu D zurückkehren?

War es hilfreich?

Lösung

Sie sollten D mit sehen können git reflog.

Sieh dir das an Artikel zum Beispiel.

Commits werden nur dann tatsächlich gelöscht, wenn Sie git gc --prune verwenden (seien Sie also vorsichtig damit!).

Wenn Sie git reflog jetzt in einem Repository ausführen, in dem Sie gearbeitet haben, werden Sie viele Änderungen sehen, die etwa so aussehen:

c5c3a82... HEAD@{0}: pull origin featureB: Merge made by recursive.
49d0608... HEAD@{1}: reset --hard HEAD^: updating HEAD
3ed01b1... HEAD@{2}: pull origin featureA: Merge made by recursive.
49d0608... HEAD@{3}: pull origin bugfixJ: Merge made by recursive.
854d44e... HEAD@{4}: commit: Add more cowbell to foo.c
6dbc22d... HEAD@{5}: pull origin bugfixI: Merge made by recursive.
9bdb763... HEAD@{6}: commit: Remove weevils
8518f9d... HEAD@{7}: checkout: moving from wickedfeature to master

Diese Zeilen können in 4 Teile unterteilt werden:

  • Hash festschreiben,
  • Commit-Zeiger,
  • Aktion,
  • und zusätzliche Informationen.

Wenn wir den Commit zurückerhalten wollten, der verloren ging HEAD@{1}, wir könnten einfach git reset --hard HEAD@{2}.
Jetzt sind unser aktueller Zweig (und unsere Arbeitskopie) auf den Repository-Status vor dem Zurücksetzen gesetzt.

Wenn wir nur sehen wollten, wie dieser Zustand war, könnten wir das tun git checkout -b temp HEAD@{2} (oder git checkout HEAD@{2} wenn Sie Git 1.5.0 und höher haben).

Andere Tipps

Ok, habe es gefunden.

Sie können verwenden git reflog.

Ich wusste nicht, wofür es war, aber jetzt kann ich sehen, dass es ein Protokoll aller Referenzen ist, auf die HEAD verwiesen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top