13. Annuler les modifications locales avec Git : annuler et réinitialiser
Lorsque nous travaillons avec la gestion des versions de code à l'aide de Git, il est courant d'apporter des modifications que, pour une raison quelconque, nous souhaitons annuler. Que nous ayons commis une erreur ou que nous souhaitions revenir à un état antérieur du projet, Git propose des outils puissants pour annuler les modifications locales : git revert
et git reset
.< /p>
La commande git revert
La commande git revert
est utilisée pour annuler les modifications introduites par un commit spécifique, en créant un nouveau commit avec le contenu annulé. Il s'agit d'un moyen sûr d'annuler les modifications car cela ne modifie pas l'historique du référentiel. En d'autres termes, git revert
est un moyen de "remonter le temps" sans effacer l'historique de votre arrivée.
git revert [commit_hash]
Pour utiliser git revert
, vous devez spécifier le hachage du commit que vous souhaitez annuler. Git créera alors un nouveau commit qui est exactement l'inverse du commit spécifié. Ceci est utile lorsque vous devez garder une trace de ce qui a été annulé, ou lorsque vous travaillez dans un référentiel partagé où la suppression de l'historique serait problématique pour les autres contributeurs.
La commande git reset
La commande git reset
, en revanche, est un outil plus radical. Il est utilisé pour réinitialiser l'état actuel de votre référentiel à une validation précédente, en ignorant les modifications apportées après cette validation. Il existe trois manières principales d'utiliser git reset
: --soft
, --mixed
et --hard
.
Réinitialisation logicielle
git reset --soft [commit_hash]
--soft
conserve toutes vos modifications actuelles dans l'état "modifications par étapes". Ceci est utile lorsque vous souhaitez réinitialiser le HEAD de votre référentiel à une validation précédente, mais que vous souhaitez conserver les modifications que vous avez apportées pour effectuer une nouvelle validation avec elles.
Réinitialiser le mixte
git reset --mixed [commit_hash]
--mixed
est l'option git reset
par défaut. Cela annulera la validation et les modifications que vous avez apportées seront conservées dans votre répertoire de travail, mais ne seront pas transférées. Cela signifie que vous devrez ajouter à nouveau les modifications avant de pouvoir les valider.
Réinitialiser dur
git reset --hard [commit_hash]
--hard
est l'option la plus radicale. Cela réinitialisera le HEAD, l’index et le répertoire de travail à l’état d’un commit précédent. Toutes les modifications apportées après la validation spécifiée seront perdues. Cette option doit être utilisée avec prudence car il n'existe aucun moyen de récupérer les modifications ignorées.
Choisir entre Revenir et Réinitialiser
Le choix entre git revert
et git reset
dépend de la situation et de ce que vous souhaitez réaliser. Si vous travaillez sur un référentiel partagé et souhaitez annuler une validation sans affecter les autres contributeurs, git revert
est le choix approprié. Si vous travaillez localement et que vous avez fait quelque chose que vous souhaitez annuler complètement, git reset
pourrait être la solution.
Exemple pratique
Supposons que vous ayez pris un engagement qui, après examen, vous avez réalisé qu'il n'aurait pas dû être fait. Pour annuler ce commit, vous pouvez utiliser :
git revert [commit_hash]
Git créera un nouveau commit qui annulera les modifications du commit spécifié. Si vous souhaitez revenir à un état antérieur du projet et ignorer tous les commits effectués après un certain point, vous pouvez utiliser :
git reset --hard [commit_hash]
Cela changera l'état de votre répertoire de travail en celui du commit spécifié, annulant toutes les modifications apportées depuis.
Soyez prudent lorsque vous annulez des modifications
Il est important d'être prudent lorsque vous annulez des modifications, en particulier lorsque vous utilisez git reset --hard
. Une fois les modifications supprimées avec cette option, elles ne peuvent pas être récupérées à moins que vous ne les ayez sauvegardées d'une manière ou d'une autre. Vérifiez toujours deux fois avant d'utiliser des commandes pouvant entraîner une perte de données.
Conclusion
Git est un outil puissant de contrôle de version, et comprendre comment annuler les modifications est essentiel pour gérer efficacement votre code. git revert
et git reset
sont des commandes précieuses qui vous donnent différents niveaux de contrôle sur l'historique de votre référentiel et l'état de votre projet. En les utilisant avec soin et compréhension, vous pouvez parcourir votre historique de code et gérer vos modifications en toute confiance.