« Pour annuler un commit, il faut supprimer ce commit. »
Dans un historique partagé, git revert conserve le passé et ajoute une nouvelle décision visible.
01Observe le mauvais commit
cd /tmp/soria-git-undo-$USER/revert
git log --oneline -3
git show HEAD
cat service.conf
02Crée le patch inverse
git revert --no-edit HEAD
git log --oneline -4
git show HEAD
cat service.conf
Le commit incorrect reste dans l’historique. Le nouveau commit inverse son patch et restaure feature=enabled.
03Vérifie sans supposer
git diff HEAD~2 HEAD -- service.conf
git status --porcelain
git log --format='%h %s' -4
Le résultat fonctionnel peut revenir à un état antérieur, mais l’historique contient maintenant l’incident et son annulation.
04Annule un commit nommé
bad_commit=$(git log --format='%H %s' | awk '/unsafe service value/{print $1; exit}')
git show "$bad_commit"
git revert --no-commit "$bad_commit"
git diff --cached
git restore --staged --worktree .
–no-commit prépare le patch inverse sans créer immédiatement le commit. Il permet une inspection ou l’agrégation contrôlée de plusieurs reverts.
05Comprends le conflit de revert
Si les mêmes lignes ont évolué depuis le commit ciblé, Git peut refuser l’application automatique. Inspecte alors git status, résous le contenu, ajoute les fichiers puis continue avec git revert –continue. Pour abandonner, utilise git revert –abort.
06Choisis entre reset et revert
Rédige la décision d’annulation
À partir d’un commit publié défectueux, fournis le hash ciblé, le patch inverse, les tests après revert et la raison pour laquelle reset n’est pas approprié.
✓Ce que tu retiens
Revert annule par un nouveau commit. Il est adapté à l’historique partagé, traçable et révisable.