web-dev-qa-db-fra.com

Git annuler la suppression de la branche locale

Je viens de supprimer la mauvaise branche avec quelques modifications expérimentales dont j'ai besoin avec git branch -D branchName.

Comment puis-je récupérer la branche?

340
Stefan Kendall

Vous pouvez utiliser git reflog pour trouver le SHA1 du dernier commit de la branche. À partir de ce moment, vous pouvez recréer une branche en utilisant

git branch branchName <sha1>

Edit: Comme le dit @seagullJS, la commande branch -D vous indique le sha1, donc si vous n'avez pas encore fermé le terminal, il devient réel. facile. Par exemple, cela supprime puis restaure immédiatement une branche nommée 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
648
bobDevil

Si vous connaissez le dernier SHA1 de la branche, vous pouvez essayer

git branch branchName <SHA1>

Vous pouvez trouver le SHA1 en utilisant git reflog, décrit dans la solution ici .

49
Chetan

Si vous n'avez pas encore envoyé la suppression, vous pouvez simplement faire:

$ git checkout deletedBranchName
29
amichaud

Si vous venez de supprimer la branche, vous verrez quelque chose comme ceci dans votre terminal:

Deleted branch branch_name(was e562d13)
  • où e562d13 est un ID unique (par exemple, le "SHA" ou le "hachage"), vous pouvez restaurer la branche supprimée.

Pour restaurer la branche, utilisez:

git checkout -b <branch_name> <sha>

par exemple:

git checkout -b branch_name e562d13 
20
Derick

Merci, cela a fonctionné.

git branch new_branch_name sha1

git checkout new_branch_name

// peut voir mes anciens fichiers archivés dans mon ancienne branche

3
Rajeev Jayaswal

Premièrement: sauvegardez l’ensemble de votre répertoire, y compris le répertoire .git.

Deuxièmement: Vous pouvez utiliser git fsck --lost-found pour obtenir l'ID des commits perdus.

Troisièmement: rebassez ou fusionnez sur le commit perdu.

Quatrième: réfléchissez toujours à deux fois avant d’utiliser -D ou --force avec git :)

Vous pourriez aussi lire cette bonne discussion sur la façon de remédier à ce type d'erreur.

EDIT: En passant, ne lancez pas git gc (ou laissez-le fonctionner par lui-même - c'est-à-dire, ne lancez pas git fetch ou quelque chose de similaire) ou vous risquez de perdre vos commits pour toujours.

3
Cameron Skinner