Ich habe gerade den falschen Zweig mit einigen experimentellen Änderungen gelöscht, die ich brauche git branch -D branchName
.
Wie kann ich den Zweig wiederherstellen?
Ich habe gerade den falschen Zweig mit einigen experimentellen Änderungen gelöscht, die ich brauche git branch -D branchName
.
Wie kann ich den Zweig wiederherstellen?
Antworten:
Sie können git reflog verwenden , um den SHA1 des letzten Commits des Zweigs zu finden. Ab diesem Punkt können Sie einen Zweig mit neu erstellen
git branch branchName <sha1>
Bearbeiten: Wie @seagullJS sagt, branch -D
sagt Ihnen der Befehl sha1. Wenn Sie das Terminal also noch nicht geschlossen haben, wird es ganz einfach. Dies löscht beispielsweise einen Zweig mit dem Namen 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
git branch branchName origin/branchName
Wenn Sie den letzten SHA1 des Zweigs kennen, können Sie es versuchen
git branch branchName <SHA1>
Sie finden den SHA1 mit git reflog
, wie in der Lösung hier beschrieben .
Wenn Sie die Löschung noch nicht gepusht haben, können Sie einfach Folgendes tun:
$ git checkout deletedBranchName
Wenn Sie gerade den Zweig gelöscht haben, wird in Ihrem Terminal Folgendes angezeigt:
Deleted branch branch_name(was e562d13)
- Wenn e562d13 eine eindeutige ID ist (auch bekannt als "SHA" oder "Hash"), können Sie damit den gelöschten Zweig wiederherstellen.
Verwenden Sie zum Wiederherstellen des Zweigs:
git checkout -b <branch_name> <sha>
zum Beispiel :
git checkout -b branch_name e562d13
Erstens: Sichern Sie Ihr gesamtes Verzeichnis, einschließlich des .git-Verzeichnisses.
Zweitens: Sie können verwenden git fsck --lost-found
, um die ID der verlorenen Commits zu erhalten.
Drittens: Rebase oder Merge auf dem verlorenen Commit.
Viertens: Überlegen Sie immer zweimal, bevor Sie -D oder --force mit git verwenden :)
Sie können auch diese gute Diskussion darüber lesen, wie Sie diese Art von Fehler beheben können.
BEARBEITEN: Übrigens, laufen Sie nicht git gc
(oder lassen Sie es nicht von selbst laufen - dh nicht laufen git fetch
oder ähnliches), sonst verlieren Sie möglicherweise Ihre Commits für immer.
Danke, das hat funktioniert.
Git-Zweig new_branch_name
sha1
git checkout new_branch_name
// kann meine alten eingecheckten Dateien in meinem alten Zweig sehen
Folge diesen Schritten:
1: Geben Sie ein:
git reflog show
Dadurch wird der gesamte Commit-Verlauf angezeigt. Sie müssen den sha-1 auswählen, der den letzten Commit enthält, den Sie zurückerhalten möchten
2: Erstellen Sie einen Filialnamen mit der von Ihnen ausgewählten Sha-1-ID , z. B.: 8c87714
git branch your-branch-name 8c87714