Aller au contenu principal
Dev Serein
Retour aux solutions
GitIntermédiaire

Git : récupérer un commit perdu après un reset ou un rebase

Retrouver un commit avec le reflog et le sécuriser sur une branche avant de récupérer les changements.

Le reflog peut retrouver un commit après un reset ou un rebase. Travaillez dans le clone où l’opération a eu lieu : le reflog reste local.

Préserver la situation actuelle

git status
git branch sauvegarde-etat-actuel

La branche sert de repère vers le commit actuel. Elle ne sauvegarde pas les fichiers modifiés ou non suivis : copiez ceux qui comptent hors du dépôt, ou enregistrez-les avant de changer de branche.

Si un rebase est encore en cours et que vous souhaitez simplement revenir à son point de départ, utilisez git rebase --abort. Cela abandonne aussi les résolutions effectuées pendant ce rebase : conservez-les d’abord si nécessaire.

Évitez le nettoyage du dépôt, notamment git gc --prune=now, tant que la récupération n’est pas terminée.

Retrouver le bon commit

git reflog --date=iso -30

Repérez les lignes reset, rebase ou commit autour du moment où le travail a disparu. Si le résultat est insuffisant, élargissez la recherche :

git reflog show --all --date=iso

Copiez l’identifiant candidat à la place de SHA_RETROUVE, puis examinez-le :

git show --stat SHA_RETROUVE
git show SHA_RETROUVE

Ne choisissez pas automatiquement « la ligne précédente » : un rebase peut produire plusieurs déplacements. Vérifiez le message et les fichiers. Préférez l’identifiant du commit à HEAD@{1}, dont la signification change au fil des opérations.

Mettre le commit à l’abri

git branch recuperation-travail SHA_RETROUVE
git log -5 --oneline recuperation-travail

Cette commande ne change pas vos fichiers ni la branche active. Elle crée une référence durable vers le commit et ses ancêtres. Choisissez un nom libre si recuperation-travail existe déjà.

Pour reprendre directement ce travail, une fois vos changements locaux sauvegardés :

git switch recuperation-travail

Récupérer seulement ce qui manque

Si votre branche actuelle contient déjà des corrections à conserver, restez sur cette branche et choisissez une des méthodes suivantes.

Pour récupérer les changements d’un commit ordinaire :

git cherry-pick SHA_RETROUVE

Un cherry-pick reprend un seul commit, pas automatiquement toute la branche. S’il manque plusieurs commits, examinez leur ordre et leurs dépendances avant de les reprendre. Un commit de fusion nécessite un traitement spécifique.

En cas de conflit, corrigez les fichiers, ajoutez-les avec git add, puis lancez git cherry-pick --continue. Pour abandonner l’opération en cours : git cherry-pick --abort.

Pour récupérer seulement la version d’un fichier :

git restore --source=recuperation-travail -- chemin/du/fichier
git diff -- chemin/du/fichier

Cette restauration remplace le contenu local de ce fichier. Sauvegardez sa version actuelle si elle contient du travail utile, puis commitez la version récupérée après relecture.

Si le reflog ne contient rien

Vérifiez les autres clones, les branches distantes et les commits associés aux pull requests. En dernier recours, git fsck --full --no-reflogs --unreachable peut signaler des commits encore présents sans référence ; inspectez chaque candidat avec git show.

La récupération n’est pas garantie : les reflogs expirent et Git peut supprimer les objets devenus inaccessibles. Un fichier jamais ajouté ni commité n’est pas récupérable par le reflog ; cherchez plutôt dans l’historique local de l’éditeur ou vos sauvegardes.

Vérifier la récupération

Contrôlez git status, l’historique et les fichiers attendus, puis lancez les tests du projet. Gardez la branche de récupération jusqu’à avoir confirmé que tout le travail utile est présent.

Ressources

SUPER CALCULATEUR / CONNEXION ÉTABLIE

UN PASSAGE SECRET DANS DEV SEREIN

Bienvenue sur
Code Lyoko.

Le monde virtuel n’était qu’à quelques lettres.
Jérémie a ouvert la connexion. À toi de jouer.

Des arbres infinis, des chemins suspendus. Garde un œil sur la mer numérique.

LYOKO-GUERRIERS

Aelita · Yumi · Ulrich · Odd

SCAN DU TERRITOIREFORÊT / 01

ALERTE XANA · TOUR ACTIVÉE

On compte sur toi, Aelita.