wake-up-neo.com

Git macht das Löschen des lokalen Zweigs rückgängig

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?

340
Stefan Kendall

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
648
bobDevil

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 .

49
Chetan

Wenn Sie die Löschung noch nicht gepusht haben, können Sie einfach Folgendes tun:

$ git checkout deletedBranchName
29
amichaud

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 
20
Derick

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

3
Rajeev Jayaswal

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.

3
Cameron Skinner