Git est le système de contrôle de version le plus utilisé au monde, avec plus de 100 millions de développeurs sur GitHub en 2024. Les erreurs Git — commit sur la mauvaise branche, données sensibles poussées par accident, merge raté — sont parmi les recherches les plus fréquentes sur Stack Overflow. La plupart de ces erreurs sont réversibles grâce à des commandes comme `git reset`, `git revert` et `git reflog`, mais la syntaxe exacte dépend du contexte (poussé ou non, soft ou hard, fichier ou commit entier).
Quelles sont les erreurs Git les plus fréquentes et comment les corriger ?
Les urgences git les plus courantes se classent en quelques catégories : commiter sur la mauvaise branche, vouloir annuler un commit récent, avoir poussé accidentellement des données sensibles, et devoir inverser un merge. Chaque scénario a une solution différente selon que vous avez déjà poussé vers le distant ou non. L'arbre de décision ci-dessus vous guide à travers ces chemins pour trouver la correction la plus sûre.
Quelle est la différence entre git reset et git revert ?
git reset réécrit l'historique en déplaçant le pointeur de branche en arrière. Il existe en trois variantes : --soft (conserve les changements stagés), --mixed (conserve les changements non stagés, c'est le défaut) et --hard (supprime les changements entièrement). Reset est sûr pour les commits locaux non poussés — mais dangereux pour l'historique partagé.
git revert crée un nouveau commit qui annule les changements d'un commit spécifié. Il préserve l'historique complet, ce qui le rend sûr pour les branches poussées et partagées. L'inconvénient : votre historique montre à la fois le commit original et le revert.
Règle de base : utilisez reset pour les erreurs non poussées, revert pour celles déjà poussées.
Quand faut-il utiliser --force-with-lease au lieu de --force ?
Parfois il faut forcer un push — par exemple, après avoir amendé un commit poussé ou utilisé git filter-repo pour supprimer des données sensibles. Utilisez toujours --force-with-lease au lieu de --force. Le flag --force-with-lease vérifie que la branche distante n'a pas été mise à jour depuis votre dernier fetch. Si quelqu'un d'autre a poussé de nouveaux commits, votre force push est rejeté — vous empêchant d'écraser accidentellement son travail.
Vous travaillez avec des expressions régulières dans vos hooks git ou scripts CI ? Essayez notre testeur de Regex. Besoin de définir les permissions de fichiers pour des scripts déployés ? Consultez le calculateur Chmod.