Ich habe gerade den falschen Zweig mit einigen experimentellen Änderungen gelöscht, die ich mit git branch -D branchName
Benötige.
Wie kann ich die Filiale wiederherstellen?
Sie können git reflog verwenden, um den SHA1 des letzten Commits des Zweigs zu ermitteln. Ab diesem Zeitpunkt können Sie einen Zweig mit neu erstellen
git branch branchName <sha1>
Bearbeiten: Wie @seagullJS sagt, teilt Ihnen der Befehl branch -D
Das sha1 mit. Wenn Sie das Terminal also noch nicht geschlossen haben, wird es ganz einfach. Dies löscht beispielsweise einen Zweig mit dem Namen master2
Und stellt ihn sofort wieder her:
[email protected] /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
[email protected] /C/MyRepo (master)
$ git branch master2 130d7ba
Wenn Sie den letzten SHA1 des Zweigs kennen, können Sie es versuchen
git branch branchName <SHA1>
Sie finden den SHA1 mit git reflog
, beschrieben in der Lösung hier .
Wenn Sie die Löschung noch nicht gepusht haben, können Sie einfach Folgendes tun:
$ git checkout deletedBranchName
Wenn Sie den Zweig gerade gelöscht haben, wird in Ihrem Terminal Folgendes angezeigt:
Deleted branch branch_name(was e562d13)
- wobei e562d13 eine eindeutige ID ist (a.k.a. der "SHA" oder "Hash"), mit der Sie den gelöschten Zweig wiederherstellen können.
Verwenden Sie zum Wiederherstellen des Zweigs Folgendes:
git checkout -b <branch_name> <sha>
zum Beispiel:
git checkout -b branch_name e562d13
Danke, das hat funktioniert.
git Branch new_branch_name
sha1
git checkout new_branch_name
// kann meine alten eingecheckten Dateien in meinem alten Zweig sehen
Erstens: Sichern Sie Ihr gesamtes Verzeichnis, einschließlich des .git-Verzeichnisses.
Zweitens: Sie können git fsck --lost-found
, um die ID der verlorenen Commits abzurufen.
Drittens: Rebase oder Merge auf das verlorene Commit.
Viertens: Überlege es dir immer genau, bevor du -D oder --force mit git verwendest :)
Sie können auch lesen Sie diese gute Diskussion wie Sie diese Art von Fehler beheben können.
BEARBEITEN: Übrigens nicht ausführen git gc
(oder lass es von selbst laufen - d. h. nicht git fetch
oder etwas ähnliches) oder Sie können Ihre Verpflichtungen für immer verlieren.