Wie mache ich eine Kaufabwicklung in Git rückgängig?

134

Ich habe gerade ein früheres Commit von meinem lokalen Git-Repo ausgecheckt. Ich habe keine Änderungen daran vorgenommen, ich habe es nur angeschaut. Jetzt möchte ich zu meinem letzten Commit zurückkehren - wie mache ich das?

Der genaue Befehl, mit dem ich ihn ausgecheckt habe:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

Wenn ich jetzt git log eingebe, sehe ich oben dieses ausgecheckte Commit, aber keines meiner späteren Commits. Habe ich diese versehentlich gelöscht?

Yuval Karmi
quelle
Ich denke, Sie sehen es falsch: Wir checken zu Zweigen (Köpfen) aus, verpflichten uns nicht einzeln
Z. Khullah

Antworten:

183

Versuchen Sie dies zuerst:

git checkout master

(Wenn Sie sich in einem anderen Zweig befinden als master, verwenden Sie stattdessen den Namen des Zweigs.)

Wenn das nicht funktioniert, versuchen Sie ...

Für eine einzelne Datei:

git checkout HEAD /path/to/file

Für die gesamte Repository-Arbeitskopie:

git reset --hard HEAD

Und wenn das nicht funktioniert, können Sie im Reflog nach Ihrem alten Kopf-SHA suchen und auf diesen zurücksetzen:

git reflog
git reset --hard <sha from reflog>

HEAD ist ein Name, der immer auf das letzte Commit in Ihrer aktuellen Niederlassung verweist.

Bernstein
quelle
Aber wie sehe ich meine Commits, um zu entscheiden, welchen SHA1-Hash ich geben soll?
Yuval Karmi
1
Sie tun nicht - Sie tippen HEADwörtlich. Git weiß schon was HEADbedeutet. Wenn Sie ihm jedoch wirklich, wirklich einen SHA1 geben möchten, können Sie git logdas Festschreibungsprotokoll anzeigen.
Amber
Wenn ich es ausführe git reset --hard HEAD, kehre ich zu diesem ausgecheckten Commit zurück ... Ich werde den genauen Befehl veröffentlichen, den ich zum Auschecken verwendet habe.
Yuval Karmi
(Wenn Sie neugierig sind, können Sie tippen git rev-parse HEADund sehen, dass es Ihnen eine SHA1 gibt, die Ihrem letzten Commit entspricht.)
Amber
Ich habe oben zwei neue Optionen hinzugefügt, probieren Sie sie aus (in der Reihenfolge - probieren Sie zuerst die Checkout-Version aus).
Amber
56

Ähnlich wie in und in der Shell rückgängig git checkoutmachen .git checkout -cdcd -

Gaylord Danke Johnson
quelle
16

Sie wollen wahrscheinlich git checkout master, oder git checkout [branchname].

Wuputah
quelle