Ce n'est pas un problème majeur, je veux juste savoir si c'est possible ou non.
Disons que nous avons deux commits, abcd123
et wxyz789
, qui se produisent à des endroits séparés non adjacents, très loin dans l'histoire d'un dépôt. Disons maintenant que nous voulons les annuler. Faire
git revert abcd123 wxyz789
entraînerait deux validations distinctes, une annulant abcd123
et l'autre revenant wxyz789
.
C'est très bien, mais que se passe-t-il si les erreurs que nous voulons corriger dans les deux commits sont logiquement liées, et à des fins d'auto-documentation, nous aimerions faire un seul commit contenant un seul "I cassé quelque chose alors maintenant je reviens aux fichiers x, y et z "commentaire? Existe-t-il une commande git qui fait cela?
(Je suis bien sûr conscient qu'il est possible de créer un commit où je corrige manuellement toutes les modifications, puis Push. C'est douloureux pour toutes les raisons évidentes.)
Tu peux faire:
git revert abcd123
git revert --no-commit wxyz789
git commit --amend
... puis rédigez un message de validation approprié décrivant l'effet combiné de l'annulation des deux validations.
En cas de retours compliqués, qui changent les uns les autres, le revert --no-commit
pourrait être problématique.
Ma solution simple était de faire du vrai retour, et du squash:
git revert <all commits>
git rebase -i
Et puis marquez toutes les restaurations comme squash
, sauf la première, pour créer un seul commit.
git revert -n <commits>
git commit
La première commande fera toutes les restaurations sans créer de commits et mettra en scène le résultat final (l'option -n). Après cela, la commande commit crée un seul commit.