580 votes

Git undo local branch delete

Je viens de supprimer la mauvaise branche avec des changements expérimentaux dont j'ai besoin avec git branch -D branchName .

Comment récupérer la branche ?

33 votes

Heureux de savoir que je ne suis pas le seul nul à l'avoir fait (et à avoir oublié de pousser régulièrement pour obtenir une copie à distance).

1037voto

bobDevil Points 5986

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

git branch branchName <sha1>

Edit : Comme le dit @seagullJS, la branch -D vous indique le sha1, donc si vous n'avez pas encore fermé le terminal, cela devient très facile. Par exemple, ceci supprime et ensuite 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

109 votes

Git vous indique quel était le SHA1 lorsque la branche est supprimée, donc si vous la supprimez simplement, il se peut que ce soit juste quelques lignes plus haut dans la ligne de commande.

2 votes

Si cette branche existe sur le serveur, alternativement, vous pouvez utiliser git branch branchName origin/branchName

1 votes

En plus j'ai fini par utiliser git cherry-pick <sha1> pour déplacer le commit vers la branche

114voto

Chetan Points 13163

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écrite dans la solution -lien défectueux-.

80voto

Dan Points 2094

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 identifiant unique (alias le "SHA" ou "hash"), avec lequel 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

60voto

greencheese Points 82

Suivez ces étapes :

1 : Entrer :

git reflog show 

Ceci affichera tout l'historique de commit, vous devez sélectionner le sha-1 qui a le dernier commit que vous voulez récupérer.

2 : créer un nom de branche avec l'option Sha-1 ID que vous avez sélectionné, par exemple : 8c87714

git branch your-branch-name 8c87714

45voto

amichaud Points 64

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

$ git checkout deletedBranchName

0 votes

Cette réponse fait taire Git Extensions à propos de "la branche que vous essayez de pousser semble être une nouvelle branche pour cette télécommande". Merci beaucoup.

0 votes

Vous avez sauvé ma vie ! !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X