Accueil·Commandes du terminal

git reset

git

Syntaxe

git reset [--soft|--mixed|--hard] <commit> | git reset <path>

Déplace le pointeur de branche sur un autre commit : --soft garde tout indexé, --mixed (par défaut) vide aussi l'index mais laisse vos modifications dans les fichiers, et --hard les détruit également, sans retour.

Options courantes

OptionSignification
--softmove the branch only; index and files keep everything, so the change stays staged
--mixeddefault: also clear the staging area, leaving edits in your files
--hardalso overwrite your files; uncommitted work is destroyed
<path>no commit given: unstage that path
--keepmove but refuse if it would overwrite a local change
--mergelike --hard but keeps changes that do not collide

Exemples

git reset --soft HEAD~1

undoes the last commit and leaves everything staged

git reset HEAD~1

undoes the last commit; the changes sit in your files, unstaged

git reset src/app.ts

unstages one file without changing it

git reset --hard origin/main

throws away local commits AND uncommitted edits

Ce qui embrouille, c’est qu’annuler a plusieurs formes : déplacer là où pointe une branche n’est pas ajouter un commit qui l’inverse.

Comment lire

  • Les crochets [ ] marquent une partie facultative.
  • Les points de suspension … signifient qu’on peut en mettre plusieurs.
  • Les options sont sensibles à la casse : sur certaines commandes, -r et -R ne font pas la même chose.

Questions fréquentes

Q. Que fait git reset ?

Déplace le pointeur de branche sur un autre commit : --soft garde tout indexé, --mixed (par défaut) vide aussi l'index mais laisse vos modifications dans les fichiers, et --hard les détruit également, sans retour.

Q. Comment l’écrire ?

git reset [--soft|--mixed|--hard] <commit> | git reset <path> — les crochets marquent ce qui est facultatif.

Q. Combien d’options valent la peine ?

Il y en a 6 ici ; la liste complète est dans man git. Cette commande relève de git.

Commandes liées

page man: man git-reset