2010-10-26 14 views
247

Ich löschte nur den falschen Zweig mit einigen experimentellen Änderungen, die ich brauche mit git branch -D branchName.Git rückgängig lokalen Zweig löschen

Wie stelle ich die Verzweigung wieder her?

+2

froh zu wissen, ich bin nicht der einzige lame- sehen o Wer hat das getan (und vergessen, regelmäßig eine Kopie zu kopieren) – Ray

+0

das macht 3 von uns jetzt –

Antwort

504

Sie können git reflog verwenden, um den SHA1 des letzten Commits der Verzweigung zu finden. Von diesem Punkt können Sie einen Zweig mit

git branch branchName <sha1> 

bearbeiten neu: 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 löscht diese und dann wieder sofort ein Zweig namens master2:

[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 
+52

Git sagt Ihnen, was der SHA1 war, wenn der Zweig gelöscht wird. Wenn Sie ihn also einfach löschen, kann es nur ein paar Zeilen in der Befehlszeile sein. – seagullJS

+1

Danke, das hat mir Arbeitsstunden erspart! FYI benutze git reflog, um die albertski

+0

Vielen Dank zu bekommen, fand ich meine "verlorenen" Dateien! – inix

34

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 here.

+1

Wie finde ich das sha1? –

+1

Ich habe meine Antwort auf den SHA1 aktualisiert. – Chetan

+0

Vielen Dank !!! –

2

Erstens: Sichern Sie Ihr gesamtes Verzeichnis, einschließlich dem .git Verzeichnis.

Zweitens: Sie können git fsck --lost-found verwenden, um die ID der verlorenen Commits zu erhalten.

Drittens: Rebase oder Merge auf die verlorene Festschreibung.

Viertens: Immer zweimal überlegen, bevor -D oder --force mit git verwenden :)

Sie könnte auch read this good discussion, wie aus dieser Art von Fehlern zu erholen.

EDIT: Übrigens, führen Sie nicht git gc (oder lassen Sie es von selbst laufen - d. H. Nicht git fetch oder etwas ähnliches laufen) oder Sie können Ihre Commits für immer verlieren.

+1

1 und 4 sind Overkill IMO. – jwg

+0

Ja, deshalb benutzen wir Git, um zu vermeiden, dass wir alles herumtragen müssen. Jede Aktion, die Sie begangen haben, steht Ihnen weiterhin zur Verfügung. – mateor

18

Wenn Sie noch nicht die Löschung noch drücken, können Sie einfach tun:

$ git checkout deletedBranchName 
+0

Diese Antwort lässt Git Extensions den Mund halten, "der Zweig, den Sie zu schieben versuchen, scheint ein neuer Zweig für diese Fernbedienung zu sein." Danke vielmals. – Omer

10

Wenn Sie nur den Zweig gelöscht, Sie so etwas wie dies in Ihrem Terminal sehen:

Deleted branch branch_name(was e562d13) 
  • wo e562d13 eine eindeutige ID ist (auch bekannt als "SHA" oder "Hash"), mit der Sie den gelöschten Zweig wiederherstellen können.

den Zweig, den Einsatz wieder her:

git checkout -b <branch_name> <sha> 

zum Beispiel:

git checkout -b branch_name e562d13 
3

Danke, arbeitete diese.

git branch new_branch_name sha1

git Kasse new_branch_name

// kann meine alten eingecheckten Dateien in meinem alten Zweig

Verwandte Themen