Annuler tout en conservant les modifications avec --no-commit
Parfois, vous souhaitez annuler les modifications d'un commit mais les conserver dans votre répertoire de travail pour les modifier. Par exemple, vous pourriez vouloir corriger une erreur dans le commit plutôt que de la supprimer entièrement. L'option --no-commit (ou -n) est parfaite pour cela.
Tout d'abord, réinitialisons notre dépôt à l'état précédent notre dernière annulation, afin de pouvoir essayer une approche différente. Nous utiliserons git reset pour cela. Cette commande déplace le pointeur HEAD, et --hard met à jour les fichiers de votre répertoire de travail pour qu'ils correspondent.
git reset --hard HEAD~1
Cette commande supprime le commit "Revert" que nous venons de faire. Vous pouvez le confirmer en exécutant git log --oneline.
Maintenant, annulons à nouveau le commit "indésirable", mais cette fois en utilisant l'option --no-commit. N'oubliez pas d'utiliser le hash du commit "Add a second, unwanted line".
Veuillez remplacer <your-commit-hash> par le hash réel de votre terminal.
git revert --no-commit <your-commit-hash>
Cette fois, aucun éditeur ne s'ouvre. L'annulation est préparée, mais pas encore commitée. Vérifiez le statut de votre dépôt :
git status
La sortie montrera que story.txt est prêt à être commitée (staged for commit) :
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: story.txt
Les modifications du commit annulé sont maintenant dans votre zone de staging. Vous pouvez maintenant les modifier. Remplaçons la ligne indésirable par une meilleure. Ouvrez story.txt avec nano :
nano story.txt
Le fichier ressemblera à ce qu'il était après l'annulation à l'étape 2. Ajoutez une nouvelle ligne, meilleure, à la fin du fichier :
And they lived happily ever after.
Enregistrez et quittez nano (Ctrl+O, Entrée, Ctrl+X).
Maintenant, ajoutez vos modifications à la zone de staging et commitez-les avec un nouveau message descriptif :
git add story.txt
git commit -m "Replace unwanted line with a proper conclusion"
Enfin, vérifiez le log et le contenu du fichier pour voir le résultat :
git log --oneline
cat story.txt
Le log montre votre nouveau commit, et story.txt contient le contenu corrigé. Vous avez réussi à annuler un commit tout en conservant et en modifiant ses changements.