git revert

Description
La commande git revert est une opération de « désannulation ». Contrairement à d'autres commandes de désannulation, elle ne réécrit pas l'historique. La commande git revert annule les modifications introduites par le commit et ajoute un nouveau commit avec le contenu inversé résultant. Cela empêche Git de perdre l'historique, ce qui est essentiel pour l'intégrité de l'historique des révisions et une collaboration efficace. La réversion est utilisée pour appliquer le commit inverse à partir de l'historique du projet. Vous pouvez utiliser git revert pour revenir en arrière automatiquement et apporter des corrections.
Options
-e --edit | Ouvre l'éditeur système configuré et vous invite à modifier le message du commit avant de valider la réversion. Option par défaut. |
|---|---|
--no-edit | Empêche l'ouverture de l'éditeur (l'inverse de l'option -e). |
-n --no-commit | Ajoute les modifications inversées à l'Index de préparation et au Répertoire de travail au lieu de créer un nouveau commit. |
-m <parent-number> | Pour réverter les commits de fusion, spécifie le commit parent contre lequel réverter. |
Exemples
# Stage the reverted changes without committing them (useful for review)
git revert -n HEAD
# Revert a merge commit against its first parent
git revert -m 1 <merge-commit-hash>Comment ça marche
Comme git checkout et git reset, git revert prend également un commit spécifié, mais il ne déplace pas les pointeurs de référence vers ce commit. L'opération de réversion prend le commit spécifié, inverse les modifications de ce commit et crée un nouveau commit de réversion.
Voici un exemple de création d'un dépôt :
Commande git revert
mkdir git_revert_example
cd git_revert_example/
git init .
#Initialized empty Git repository in /git_revert_example/.git/
touch w3docs_file
git add w3docs_file
git commit -m "original commit"
#[master (root-commit) 299b15f] original commit
#1 file changed, 0 insertions(+), 0 deletions(-)
#create mode 100644 w3docs_file
echo "original content" >> w3docs_file
git commit -m "add new content to w3docs_file"
#[master 3602d88] add new content to w3docs_file
#1 file changed, 1 insertion(+)
echo "prepended line content" >> w3docs_file
git commit -m "prepend content to w3docs file"
#[master 86bb32e] prepend content to w3docs file
#1 file changed, 1 insertion(+)
git log --oneline
#86bb32e prepend content to w3docs file
#3602d88 add new content to w3docs file
#299b15f original commitDans cet exemple, un dépôt est initialisé dans un nouveau répertoire nommé git_revert_example. Il y a 3 commits dans le dépôt dans lesquels un fichier nommé w3docs_file est ajouté. Son contenu a été modifié deux fois. Nous utilisons git log à la fin de la configuration du dépôt pour afficher les 3 commits dans l'historique des commits. Nous pouvons maintenant invoquer git revert :
git revert
git revert HEAD
#[master b9cd081] Revert "prepend content to w3docs file"
#1 file changed, 1 deletion(-)git revert ne fonctionnera pas sans passer une référence de commit. Dans l'exemple donné, elle a été passée dans la référence HEAD pour réverter le dernier commit. Une réversion crée un nouveau commit qui ouvre l'éditeur système configuré pour créer un nouveau message de commit. Nous pouvons utiliser git log et voir le nouveau commit ajouté au journal précédent :
git log --oneline
git log --oneline
#2365e21 Revert "prepend content to w3docs_file"
#23ab21e prepend content to w3docs file
#3602d88 add new content to w3docs_file
#345b23f original commitAprès la réversion, le 3e commit est toujours dans l'historique du projet. git revert a ajouté un nouveau commit pour annuler ses modifications au lieu de le supprimer.
Réinitialisation vs. réversion
La commande git revert annule un seul commit, tandis que git reset revient à un état précédent du projet en supprimant les commits suivants.


La réversion est considérée comme une opération sûre pour les commits qui ont été publiés dans un dépôt partagé. Un autre avantage de la réversion est de cibler un commit spécifique à un point quelconque de l'historique. Évitez d'utiliser git revert sur des commits privés ou non publiés où git reset est plus efficace. Trouvez des informations détaillées sur git reset sur notre page suivante.
Pratique
Quelles sont les caractéristiques et les options de la commande 'git revert' ?