Mémo Git · Réécrire l'historique
Revenir à un commit antérieur
git reset --soft | --mixed | --hard <commit>
git reset <commit> déplace la branche courante sur un commit plus ancien. L'option choisit ce que deviennent les modifications des commits retirés : --soft les garde indexées, --mixed (par défaut) les garde dans les fichiers, --hard les efface.
Ce que ça fait
Déplace la branche courante sur un autre commit. Soft garde tout indexé, mixed garde les fichiers modifiés, hard efface tout.
Un cas d'usage
Tu as commité trop tôt : un reset soft sur le commit précédent te rend les modifications, prêtes à être recommitées.
Attention : Le reset hard supprime les modifications locales et rend les commits suivants inaccessibles.
En ligne de commande
git reset --soft HEAD~1- Annule le dernier commit ; ses modifications restent indexées.
git reset HEAD~1- Annule le dernier commit ; ses modifications restent dans les fichiers, non indexées.
git reset --hard HEAD~1- Annule le dernier commit et efface ses modifications.
git reset --hard origin/main- Aligne la branche sur le remote, en abandonnant tout le travail local.
git reset --hard ORIG_HEAD- Annule un reset, un merge ou un pull qui vient d'être fait.
Dans Merathon
- Clic droit sur le commit cible dans le graphe → « Reset <branche> ici — soft », « mixed » ou « hard ».
Questions fréquentes
Comment récupérer des commits après un git reset --hard ?
git reflog liste les positions passées de HEAD ; git reset --hard <hash> y revient. Les modifications jamais commitées, elles, ne se récupèrent pas.
Peut-on faire un reset sur des commits déjà poussés ?
Seulement sur ta propre branche, avec un push forcé ensuite. Sur une branche partagée, utilise git revert.