Vous avez un problème avec Git et vous cherchez la solution rapidement ? Cette section regroupe 7 guides opérationnels, organisés par symptôme. Pas de théorie inutile : chaque guide part d'un message d'erreur ou d'une situation concrète et donne la solution étape par étape.
La bonne nouvelle : Git ne supprime presque rien. Les commits,
branches et stashs que vous croyez perdus restent accessibles via
git reflog, généralement 90 jours, mais les entrées devenues
injoignables après un commit --amend ou un rebase expirent souvent
au bout de 30 jours (gc.reflogExpireUnreachable). Avant toute
opération de récupération,
trois commandes permettent de cerner la situation :
git status, état actuel du dépôt (modifié, stagé, en conflit)git log --oneline -10, les 10 derniers commits de la branchegit reflog, tout ce que Git a enregistré ces dernières heures
Trouvez votre problème
Section intitulée « Trouvez votre problème »| Symptôme | Guide |
|---|---|
| « Mon message de commit est faux » / « J'ai oublié un fichier » | Annuler et corriger des commits |
| « J'ai commité sur main au lieu de ma branche » | Commit sur la mauvaise branche |
| « Git me dit CONFLICT » | Résoudre les conflits de merge |
« ! [rejected] quand je push » | Débloquer un push rejeté |
| « Le fichier est dans .gitignore mais Git le suit toujours » | Nettoyer l'historique et les fichiers |
| « J'ai supprimé une branche par erreur » / « J'ai perdu des commits » | Récupérer des données perdues |
| « Quelque chose ne marche plus, je ne sais pas depuis quand » | Diagnostiquer des problèmes |
Quelle commande pour quel guide ?
Section intitulée « Quelle commande pour quel guide ? »Chaque guide donne la commande qui règle le cas. Pour un commit à corriger,
Annuler et corriger des commits choisit entre
amend, revert et reset, et
Commit sur la mauvaise branche déplace votre
travail sans le perdre. Pour un conflit, le guide
Résoudre les conflits de merge traite les
marqueurs, --ours et --theirs, rerere et --abort. Pour un push
rejeté, Débloquer un push rejeté s'appuie sur
pull --rebase et --force-with-lease.
Les trois derniers guides font le ménage et l'enquête.
Nettoyer l'historique et les fichiers
emploie git rm --cached, filter-repo et .gitignore.
Récupérer des données perdues retrouve vos
commits et branches avec le reflog, fsck et ORIG_HEAD. Enfin
Diagnostiquer des problèmes localise le commit
fautif avec bisect, blame et log -S.
Comprendre pour mieux corriger
Section intitulée « Comprendre pour mieux corriger »La majorité des erreurs Git tombent dans trois catégories :
Vous avez modifié des données non partagées (commits locaux, branches
non pushées). reset, amend et rebase sont vos alliés : ils
réécrivent une histoire que personne d'autre n'a vue, et les commits
qu'ils écartent restent retrouvables par le reflog. La réserve porte
sur le travail non commité, que Git n'a jamais enregistré et que le
reflog ne peut donc pas rendre : reset --hard l'efface pour de bon.
Commitez ou remisez d'abord, et ces trois commandes deviennent
réellement sans danger.
Vous avez modifié des données déjà partagées (commits pushés sur
origin). La récupération passe par revert (crée un commit inverse,
sans réécriture) ou par push --force-with-lease si toute l'équipe est
prévenue. Ne jamais reset --hard sur une branche partagée sans
coordination.
Vous avez cru supprimer quelque chose (branche effacée, reset --hard,
stash perdu). Tout est dans le reflog, consultez-le avant de paniquer.
À retenir
Section intitulée « À retenir »- Ne paniquez jamais : Git ne jette presque rien, le reflog
conserve généralement 90 jours d'historique (30 jours pour les
entrées devenues injoignables après
amendourebase) git pull --rebaserésout 90% des push rejetésgit commit --amendcorrige le dernier commit (message ou fichier oublié)git revertannule un commit pushé en créant un commit inversegit reflogest votre machine à remonter le temps, premier réflexe quand quelque chose disparaît- Créez une branche de sauvegarde avant toute opération risquée :
git branch backup-avant-manipne coûte rien - Ces guides renvoient vers les cours (Modules 1-6) pour la théorie détaillée