Passer au contenu
GitTree
Guides Git6 minutes de lecture

Comment récupérer une réserve Git supprimée, une branche supprimée ou des commits perdus

Une réserve supprimée ou une branche supprimée est rarement définitivement perdue : Git conserve les validations jusqu'à ce que le garbage collection les supprime. Trouvez-les avec le reflog ou git fsck, vérifiez ce qu'ils contiennent et remettez-les sur une branche avant qu'il ne soit trop tard.

Écrit par Kodmora

L'éditeur de logiciels derrière GitTree

Mis à jour
  • Cachette
  • Annuler et récupérer
Sur cette page

Lorsque vous supprimez une réserve ou supprimez une branche, Git supprime le nom, pas les validations. Les validations restent dans le référentiel en tant qu'objets inaccessibles jusqu'à ce que le garbage collection les élague, généralement après deux semaines ou plus. Recherchez le dernier commit d'une branche supprimée dans le reflog avec git reflog, trouvez une réserve supprimée avec git fsck --unreachable, vérifiez-la avec git show, puis conservez-la avec git branch rescue <sha>.

Ce guide couvre chaque cas avec les commandes exactes, explique combien de temps Git conserve le travail perdu et ce qui ne peut pas être récupéré, et montre la même récupération dans Lost & Found de GitTree, qui recherche chaque source en même temps et ne vérifie ou ne réinitialise jamais quoi que ce soit. Lost & Found fait partie du forfait gratuit de GitTree. Pour annuler une réinitialisation, un rebase ou une modification, lisez plutôt comment annuler git reset, rebase and commit.

Où vit réellement le travail Git « perdu »

Un commit est accessible lorsqu'une branche, une balise, le stash ou HEAD y mène. La suppression d'une branche ou la suppression d'une réserve rend ses validations inaccessibles, mais elles restent dans .git/objects. Deux enregistrements vous aident à les trouver : le reflog, où chaque branche et HEAD pointaient auparavant, et la base de données d'objets elle-même, que git fsck peut rechercher.

Quel outil trouve quel type de travail perdu
Ce que tu as perduOù chercherCommande
Une branche supprimée que vous aviez extraiteLe reflog de HEADgit reflog
Une branche supprimée que vous n'avez jamais extraiteCommis inaccessiblesgit fsck --unreachable
Une réserve supprimée ou effacéeValidations en forme de fusion inaccessiblesgit fsck --unreachable | grep commit
Commits perdus après une réinitialisation ou un rebaseLe reflog de la branchegit reflog show <branch>
Modifications jamais validées ou cachéesNulle part dans GitNon récupérable depuis Git

Récupérer une branche supprimée

Git imprime le dernier commit de la branche lorsque vous la supprimez (Deleted branch feature/login (was 3f2a9c1)). Si ce message a disparu, recherchez dans le reflog de HEAD la dernière fois que vous étiez sur la branche, puis recréez la branche à ce commit.

# find the last commit of the branch
git reflog | grep "feature/login"

# check what it holds
git show 3f2a9c1 --stat

# put the branch back
git branch feature/login 3f2a9c1

Récupérer une cachette abandonnée

Une cachette n'a pas de reflog propre une fois qu'elle est supprimée, alors recherchez les commits inaccessibles. Une cachette est un commit en forme de fusion dont le message commence par WIP on ou On <branch>:, ce qui facilite le filtrage. C’est la méthode décrite dans la propre documentation de Git.

# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
  | xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"

# inspect a candidate
git stash show -p 7c1e0b4

# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4

Trouvez tous les commits en suspens avec git fsck --lost-found

git fsck --lost-found répertorie les commits en suspens et écrit une copie de chacun dans .git/lost-found/commit/, nommé par son identifiant. Utilisez-le lorsque vous ne savez pas ce que vous recherchez : listez-les avec leurs dates et messages, puis partez de celui que vous souhaitez.

git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0e

Récupérez le travail perdu avec l'outil Objets trouvés de GitTree

  1. Ouvrir les objets perdus et trouvés

    Choisissez Outils → Objets perdus ou appuyez sur Alt+Shift+D. Il s'ouvre comme une fenêtre complète sur sa page Démarrer, qui explique les trois sources qu'il recherche : le reflog, les références de récupération de GitTree et les objets inaccessibles.

  2. Trouver du travail local

    Cochez Inclure une analyse plus approfondie des objets inaccessibles pour rechercher également les cachettes supprimées, puis appuyez sur Rechercher du travail local. Travail trouvé répertorie chaque résultat avec sa source et la date à laquelle il a été vu ; Filtrer par commit, message ou source réduit la liste.

  3. Inspectez avant de conserver

    Sélectionnez un résultat : Pourquoi cet objet apparaît affiche ses preuves, son message et ses fichiers apparaissent à côté, et chaque fichier ouvre son contenu. Rien n'est extrait ou appliqué.

  4. Gardez-le sur une branche

    Sous Conserver ce commit, saisissez un Nouveau nom de branche et appuyez sur Créer une branche de récupération. Récupéré répertorie la branche ; Afficher dans le graphique y accède. Vos fichiers de checkout et de travail ne changent pas.

Lost & Found dans GitTree s'ouvre sur sa page de démarrage : le reflog, les références de récupération et une analyse plus approfondie facultative, avant de rechercher un travail local.
Lost & Found dans GitTree s'ouvre sur sa page de démarrage : le reflog, les références de récupération et une analyse plus approfondie facultative, avant de rechercher un travail local.

Combien de temps Git conserve les commits perdus

Paramètres d'expiration par défaut de Git
ParamètrePar défautCe qu'il contrôle
gc.reflogExpire90 joursLes entrées de relog pour les commits sont toujours accessibles
gc.reflogExpireUnreachable30 joursLes entrées de relog pour les commits ne sont plus accessibles
gc.pruneExpire2 semainesObjets inaccessibles sans entrée de reflog, comme une réserve déposée

Le garbage collection s'exécute tout seul après certaines commandes, ce sont donc des fenêtres, pas des promesses. Plus tôt vous chercherez, plus vous en trouverez. Une copie ailleurs, comme le clone d'un coéquipier ou une branche poussée, est l'autre filet de sécurité : le travail perdu uniquement sur votre ordinateur n'existe que là-bas.

Ce qui ne peut être récupéré

  • Modifications qui n'ont jamais été validées ou cachées, telles que les modifications rejetées avec git checkout -- <file> ou git restore.
  • Fichiers non suivis qui n'étaient pas dans une cache créée avec -u.
  • Confirme que le garbage collection a déjà été élagué.
  • Un travail qui n’existait que sur l’ordinateur d’une autre personne.

Étapes suivantes : le guide Lost & Found documente chaque page et chaque bouton, trouver les conseils de branche précédents couvre la vue reflog, et le guide git stash explique l'application, l'affichage et les fichiers non suivis afin que vous ayez besoin d'une récupération moins souvent.

Questions fréquemment posées

Puis-je récupérer une réserve git abandonnée ?

Habituellement, oui. Une réserve supprimée devient une validation inaccessible jusqu'à ce que le garbage collection l'élague. Trouvez-le avec git fsck --unreachable, inspectez-le avec git stash show -p <sha>, puis git stash apply <sha> ou git branch <name> <sha>.

Comment récupérer une branche supprimée dans Git ?

Recherchez le dernier commit de la branche dans git reflog (ou le message « was <sha> » que Git a imprimé lorsque vous l'avez supprimé), puis exécutez git branch <name> <sha> pour remettre la branche.

Qu’est-ce qu’un commit en suspens ?

Un commit vers lequel aucune entrée de branche, de balise, de cache ou de reflog ne pointe. git fsck --lost-found les répertorie et les copie dans .git/lost-found/commit/ afin que vous puissiez les inspecter.

Est-ce que git gc supprime les commits perdus ?

Oui, une fois qu'ils sont plus anciens que les paramètres d'expiration : par défaut, les objets inaccessibles sans entrée de reflog sont élagués après deux semaines. Évitez git gc et git prune jusqu'à ce que vous ayez récupéré votre travail.

Puis-je récupérer les modifications que je n’ai jamais validées ?

Pas depuis Git. Seul le travail validé ou caché se trouve dans la base de données d'objets. L’historique local de votre éditeur ou une sauvegarde est l’endroit où chercher.

Le programme Objets trouvés de GitTree est-il gratuit ?

Oui. Lost & Found fait partie du forfait gratuit de GitTree. Il lit uniquement votre référentiel local et le seul changement qu'il apporte est la branche de récupération que vous demandez.

Sources

Les allégations concernant d'autres produits ont été vérifiées par rapport à leurs pages officielles sur 5 novembre 2026. Les prix et les fonctionnalités changent ; les pages des fournisseurs sont la source de vérité.