La différence entre Git Reset, Git Checkout et Git Revert ⋆ ALexHost SRL

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills
17.01.2025

La différence entre Git Reset, Git Checkout et Git Revert

Un contrôle de version efficace est vital pour tout projet de développement, et la bonne infrastructure peut considérablement améliorer votre flux de travail. AlexHost propose des solutions d’hébergement VPS puissantes et évolutives, idéales pour héberger vos référentiels Git et assurer une gestion de projet fluide. Avec des adresses IPv4 dédiées, un stockage NVMe rapide et un panneau de contrôle convivial, AlexHost fournit l’environnement parfait pour exécuter Git et d’autres outils de développement, vous donnant la performance et la fiabilité nécessaires pour une collaboration transparente.

Lorsque vous travaillez avec Git, il existe de nombreuses commandes qui vous permettent d’annuler des modifications ou de naviguer entre différents états de votre dépôt. Trois des commandes les plus utilisées à cette fin sont git reset, git checkout et git revert. Bien qu’elles puissent sembler similaires, chacune d’entre elles a un objectif distinct et fonctionne d’une manière différente.

Voici une analyse détaillée des différences entre git reset, git checkout et git revert :


1. git reset

git reset est utilisé pour annuler des commits ou des changements en déplaçant le pointeur HEAD de la branche courante vers un commit spécifique. Il modifie l’historique des livraisons et peut affecter votre répertoire de travail, votre zone de stockage, ou les deux, selon la manière dont il est utilisé.

Cas d’utilisation :

  • Annulation de livraisons récentes.
  • Déplacer le pointeur HEAD vers un commit antérieur.
  • Déstocker des fichiers de la zone de stockage (tout en conservant les modifications dans le répertoire de travail).

Syntaxe de la commande :

git reset [–soft | –mixed | –hard]

Modes de réinitialisation :

  • –soft : Déplace le pointeur HEAD vers le commit spécifié mais conserve les modifications dans la zone de transit et le répertoire de travail.
  • –mixed (par défaut) : Déplace le pointeur HEAD vers la livraison spécifiée et réinitialise la zone de stockage, mais conserve les modifications dans le répertoire de travail.
  • –hard : déplace le pointeur HEAD, réinitialise la zone de transit et supprime toutes les modifications dans le répertoire de travail.

Exemple :

git reset –hard HEAD~1 # Recule HEAD d’un commit et rejette tous les changements

Attention : git reset –hard est une opération destructive car elle supprime définitivement les modifications du répertoire de travail et de l’historique des livraisons.


2. git checkout

git checkout est utilisé pour passer d’une branche à l’autre ou pour extraire un commit ou un fichier spécifique. Il modifie le répertoire de travail pour qu’il corresponde à l’état de la branche, du commit ou du fichier que vous extrayez, mais il ne modifie pas l’historique des commits à moins que vous ne créiez un nouveau commit après avoir changé de branche.

Cas d’utilisation :

  • Passer d’une branche à l’autre.
  • Extraire un commit précédent ou des fichiers spécifiques sans modifier l’historique des commits.
  • Création d’une nouvelle branche.

Syntaxe de la commande :

git checkout # Basculer vers une branche différente git checkout # Extraire un commit spécifique dans un état HEAD détaché git checkout — # Restaurer un fichier spécifique à son dernier état commis

Exemple :

git checkout feature-branch # Passer à ‘feature-branch’ git checkout 123abc # Extraire le commit avec le hash 123abc (état HEAD détaché) git checkout — file.txt # Restaurer file.txt dans l’état où il était lors du dernier commit

Attention : Si vous extrayez un commit spécifique (et non une branche), vous entrez dans un état HEAD détaché, ce qui signifie que les changements ne seront associés à aucune branche à moins que vous ne créiez une nouvelle branche à partir de ce point.


3. git revert

git revert est utilisé pour annuler un commit en créant un nouveau commit qui annule les changements introduits par le commit original. Il préserve l’historique des livraisons, ce qui en fait un moyen sûr d’annuler les modifications sans réécrire l’historique.

Cas d’utilisation :

  • Annuler les livraisons en toute sécurité, en particulier dans les branches partagées ou distantes.
  • Revenir sur des modifications spécifiques tout en conservant l’historique des modifications.
  • Annuler des modifications dans un environnement collaboratif.

Syntaxe de la commande :

git revert

Exemple :

git revert HEAD # Annule le dernier commit et crée un nouveau commit avec les changements inversés git revert # Annule un commit spécifique en créant un nouveau commit qui inverse ses changements

Note importante : git revert n’efface pas l’historique ou les commits. Au lieu de cela, il crée un nouveau commit qui annule les modifications du commit spécifié. Cela fait de git revert une commande non destructive qui conserve un historique complet des modifications.

Quand utiliser chaque commande

  • Utilisez git reset lorsque :
    • Vous avez besoin d’annuler un commit récent (ou plusieurs commits) dans votre dépôt local.
    • Vous voulez dépiler des fichiers ou annuler des modifications dans votre répertoire de travail.
    • Vous travaillez sur une branche locale et n’avez pas besoin de conserver l’historique des livraisons.
  • Utilisez git checkout quand :
    • Vous devez passer d’une branche à l’autre.
    • Vous voulez extraire un commit antérieur sans modifier l’historique (dans un état HEAD détaché).
    • Vous avez besoin de restaurer un fichier ou un dossier à son état précédent sans affecter le reste de vos modifications.
  • Utilisez git revert quand :
    • Vous devez annuler des modifications qui ont déjà été poussées vers une branche partagée ou distante.
    • Vous voulez annuler un commit tout en gardant l’historique intact.
    • Vous collaborez avec d’autres personnes et souhaitez conserver un historique clair et précis des modifications.

Conclusion

Chacune de ces commandes Git – git reset, git checkout et git revert – a un but et un effet uniques. Comprendre quand et comment les utiliser correctement est essentiel pour gérer efficacement l’historique et les modifications de votre projet. Lorsque vous travaillez dans un environnement collaboratif, il est souvent plus sûr d’utiliser git revert pour annuler les modifications, tandis que git reset peut être utile pour nettoyer votre historique local. git checkout, quant à lui, est la commande de référence pour changer de branche ou naviguer entre les différents commits sans altérer l’historique du dépôt.

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills