2016-01-12 22 views
6

Ich bin überrascht, ich konnte die Antwort auf SO nicht finden.Git - Können wir gelöschte Commits wiederherstellen?

Können wir gelöschte Commits in Git wiederherstellen/wiederherstellen?

Zum Beispiel ist es das, was ich getan habe:

# Remove the last commit from my local branch 
$ git reset --hard HEAD~1 

# Force push the delete 
$ git push --force 

Nun ist es eine Möglichkeit, die Festschreibung der gelöscht wurde, um wieder? Stellt git das Löschen intern auf (log)?

+0

Sie können Ihre vorherigen HEAD begehen durch git reflog und check it out wieder – Martin

Antwort

32

Um den commit zurück Sie die reflog es Ref nachschlagen können.

Referenzprotokolle oder „reflogs“, aufnehmen, wenn die Spitzen der Zweige und andere Referenzen im lokalen Repository aktualisiert wurden.

Führen Sie diesen Befehl ein:

git reflog 

die ersten Einträge scannen und finden die begehen, das verloren war. Verfolgen Sie den Identifikator für diesen Commit (Sie können entweder die 1. oder 2. Spalte verwenden). Lassen Sie uns die ID "ID" nennen.

Wenn Sie keine zusätzliche Arbeit gemacht haben, seit Sie die Reset hat --hard Sie tun können:

git reset --hard ID 
git push -f origin master 

Wenn Sie seit dem Reset andere Arbeit gemacht haben, könnten Sie cherry-pick, wenn wieder auf Ihre Zweig wie folgt aus:

git cherry-pick ID 
git push origin master 
+1

Vielen dank an Sie finden – niahoo

4

Ja, können Sie Ihre finden in reflog Verwendung begehen:

git reflog 

alle Commits anzuzeigen, werden/wurden im Repository erstellt - nach diesem Sie entfernt Zur Kasse sollte Kasse Befehl begehen

git checkout <your commit-SHA> 

oder kirsch holen sie es nach:

git cherry-pick <your commit-SHA> 
Verwandte Themen