Les trois arbres
Git suit trois "arbres" : le commit HEAD, l'index, et l'arbre de travail. git reset déplace le pointeur de branche et optionnellement réécrit l'index et l'arbre de travail.
--soft : déplacer HEAD seulement
git reset --soft HEAD~1
git commit -m "Meilleur message"
--mixed : aussi reset l'index (par défaut)
git reset HEAD~1
--hard : tout reset
git reset --hard HEAD~1
Une table de décision
- Refaire le dernier message ?
--soft HEAD~1puis commit. - Tout dé-stager ?
--mixed. - Jeter les changements et matcher un remote ?
--hard origin/main.
Reset un seul fichier
git reset HEAD path/to/file
git checkout -- path/to/file
git restore --staged path/to/file
git restore path/to/file
Reset versus revert
Utilisez revert sur les branches partagées; utilisez reset sur le travail local seulement.
Récupérer d'un mauvais --hard
git reflog
git reset --hard HEAD@{1}