Quatre situations se ressemblent et n'appellent pas la même réponse. Ce qui les sépare est l'endroit où se trouve ce qu'on veut défaire, et le fait qu'il ait été publié ou non.
La situation
Un même fichier, rapport.py, à quatre moments différents.
| Moment | Où en est la modification |
|---|---|
| A | modifiée dans l'éditeur, rien de plus |
| B | ajoutée à l'index par git add, pas encore commitée |
| C | commitée, jamais poussée |
| D | commitée et poussée sur la branche partagée |
Objectif
Donner pour chaque moment la commande qui défait la modification. Répondre par la commande seule, sans le nom du fichier ni d'empreinte : par exemple git restore.
Pièges
Le cas D est le seul où l'on n'a pas le droit de réécrire quoi que ce soit : le commit est déjà chez les autres. On en ajoute un qui applique l'inverse.