git revert --no-commit sans mise en scène
Habituellement, la commande git revert
crée automatiquement des validations avec des messages de journal de validation indiquant quelles validations ont été annulées.
Pour éviter la validation automatique, il y a l'option -n
(ou --no-commit
).
Mais après cette commande, les fichiers rétablis se trouvent dans la zone intermédiaire. Je peux les déchaîner en utilisant la commande git reset HEAD
.
Existe-t-il un moyen direct d'annuler un commit sans commettre et mettre en scène?
En d'autres termes: existe-t-il une commande directe pour annuler une validation en appliquant les modifications uniquement au répertoire de travail, sans toucher à l'index?
Il n'y a pas de commande unique pour cela. Comme vous l'avez déjà noté, vous pouvez combiner git revert -n
Avec git reset
Pour annuler la réversion dans l'index.
Outre cette méthode, vous pouvez utiliser git apply -R
Pour "appliquer inversement" un correctif, et vous pouvez transformer un commit en correctif avec git show
, Donc:
$ git show <rev> | git apply -R
a le même effet, avec une différence importante (mais subtile). Permettez-moi de citer la documentation git revert
Et d'ajouter ma propre emphase:
-n, --no-commit
Habituellement, la commande crée automatiquement des validations avec des messages de journal de validation indiquant quelles validations ont été annulées. Cet indicateur applique les modifications nécessaires pour rétablir les validations nommées dans votre arborescence de travail et l'index, mais n'effectue pas les validations. De plus, lorsque cette option est utilisée, votre index n'a pas à correspondre à la validation HEAD. La restauration est effectuée par rapport à l'état de début de votre index.
En d'autres termes, git revert -n
fonctionne dans et sur l'index , avec pour effet secondaire de mettre à jour votre arbre de travail. La commande git apply
Fonctionne (par défaut de toute façon) sur l'arbre de travail uniquement, et peut en fait être utilisée en dehors d'un référentiel git.