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?
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
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 .
Si vous n'avez pas encore envoyé la suppression, vous pouvez simplement faire:
$ git checkout deletedBranchName
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
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
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.