Git Undo-Filiale löschen
-
26-09-2019 - |
Frage
Ich löschte nur den falschen Zweig mit einigen experimentellen Veränderungen, die ich mit git branch -D branchName
müssen.
Wie rette ich den Zweig?
Lösung
Sie können mit git reflog die SHA1 des letzten der Branche verpflichten finden . Von diesem Punkt können Sie einen Zweig mit
neu erstellengit branch branchName <sha1>
Edit: Wie @seagullJS sagt der branch -D
Befehl Sie den SHA1 sagt, also, wenn Sie nicht das Terminal geschlossen haben noch wird es wirklich einfach. Zum Beispiel dieser Löschungen und dann wieder sofort einen Zweig namens master2
:
user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
Andere Tipps
Wenn Sie die letzte SHA1 der Branche kennen, können Sie versuchen
git branch branchName <SHA1>
Sie können die SHA1 finden git reflog
Verwendung in der beschriebenen Lösung hier .
Wenn Sie die Löschung noch nicht schieben, können Sie einfach tun:
$ git checkout deletedBranchName
Wenn Sie nur den Zweig gelöscht, werden Sie so etwas wie dies in Ihrem Terminal sehen:
Deleted branch branch_name(was e562d13)
- wo e562d13 ist eine eindeutige Kennung (auch bekannt als die „SHA“ oder „Hash“), mit diesem können Sie die gelöschte Zweig wiederherstellen.
, um den Zweig wiederherzustellen, verwenden Sie:
git checkout -b <branch_name> <sha>
zum Beispiel :
git checkout -b branch_name e562d13
Erstens:. Sichern Sie Ihr gesamtes Verzeichnis, einschließlich dem .git Verzeichnis
Zweitens:. Sie git fsck --lost-found
können Sie die ID des verlorenen Commits erhalten
Drittens:. Rebase oder fahren Sie auf die verlorene begehen
Vierter: Immer zweimal überlegen, bevor -D mit oder --force mit git:)
Sie könnten auch lesen Sie diese gute Diskussion , wie aus dieser Art von Fehlern zu erholen.
EDIT:. By the way, nicht laufen git gc
(oder lassen Sie es von selbst laufen - das heißt nicht git fetch
oder ähnliches nicht ausgeführt), oder Sie können immer Ihre Commits verlieren
Danke, das funktioniert.
git branch new_branch_name
sha1
git checkout new_branch_name
// kann meine alten eingecheckten Dateien in meinem alten Zweig
siehe