Ces trois commandes ont des objectifs totalement différents. Ils ne se ressemblent même pas du tout.
git revert
Cette commande crée un nouveau commit qui annule les changements d'un commit précédent. Cette commande ajoute un nouvel historique au projet (elle ne modifie pas l'historique existant).
git checkout
Cette commande extrait le contenu du référentiel et le place dans votre arbre de travail. Elle peut également avoir d'autres effets, selon la façon dont la commande a été invoquée. Par exemple, elle peut aussi changer la branche sur laquelle vous travaillez actuellement. Cette commande n'apporte aucun changement à l'historique.
git reset
Cette commande est un peu plus compliquée. Elle fait en fait deux choses différentes selon la façon dont elle est invoquée. Elle modifie l'index (la "zone de transit"). Ou elle change le commit sur lequel une tête de branche pointe actuellement. Cette commande peut modifier l'historique existant (en changeant le commit auquel une branche fait référence).
En utilisant ces commandes
Si un commit a été fait quelque part dans l'historique du projet, et que vous décidez plus tard que le commit est incorrect et n'aurait pas dû être fait, alors git revert
est l'outil idéal pour ce travail. Il va annuler les changements introduits par le mauvais commit, en enregistrant le "undo" dans l'historique.
Si vous avez modifié un fichier dans votre arbre de travail, mais que vous n'avez pas validé la modification, vous pouvez utiliser la commande git checkout
pour extraire une copie fraîche du dépôt du fichier.
Si vous avez fait un commit, mais que vous ne l'avez pas partagé avec quelqu'un d'autre et que vous décidez que vous n'en voulez pas, alors vous pouvez utiliser la fonction git reset
pour réécrire l'historique de sorte qu'il semble que vous n'ayez jamais fait ce commit.
Ce ne sont là que quelques-uns des scénarios d'utilisation possibles. Il existe d'autres commandes qui peuvent être utiles dans certaines situations, et les trois commandes ci-dessus ont également d'autres utilisations.