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?

War es hilfreich?

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 erstellen
git 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top