Reset en français

Introduction au Reset dans Git

La commande exttt{reset} de Git est essentielle pour gérer l'état de votre dépôt et pour annuler des commits. Elle est particulièrement utile dans un environnement local où les modifications n'ont pas encore été partagées. Il est important de rappeler que si vous souhaitez annuler des modifications dans un dépôt public déjà partagé, il est préférable d'utiliser la commande exttt{revert}.

Syntaxe de la Commande

La syntaxe de base de la commande reset est la suivante :

git reset  

Ici, exttt{} et exttt{} sont des paramètres que nous allons explorer ensuite.

Options de Mode

Les options de mode définissent la manière dont Git va annuler les changements jusqu'à un commit antérieur. Les options incluent :

  • ** exttt{--soft}** : Cette option déplace le pointeur HEAD vers un commit antérieur sans affecter la zone de staging (index) ni l'arborescence de travail, ce qui permet de préparer de nouveaux commits sans perte de données.
  • ** exttt{--mixed}** : C'est l'option par défaut qui déplace le HEAD tout en réinitialisant la zone de staging pour correspondre à l'état du commit, mais laisse l'arborescence de travail intacte.
  • ** exttt{--hard}** : Cette option va encore plus loin en réinitialisant également l’arborescence de travail pour correspondre à ce que le commit reflète, supprimant toute modification non commitée.

Référencer des Commits

Pour désigner un commit spécifique lors de l’utilisation de exttt{git reset}, vous pouvez utiliser l'identifiant unique du commit, souvent abrégé en une courte séquence comme :

05df67f9066c8ddd95c8d7bb2137acfb8b18e167 → 05df67f

Vous pouvez également faire référence à HEAD, qui indique le commit actuellement actif dans la branche vérifiée. De plus, si vous souhaitez annuler un ajout accidentel d’un fichier, vous pouvez utiliser le nom de ce fichier à la place de la référence de commit.

Exemple Pratique

Imaginons que vous ayez par erreur effectué un commit dans votre branche principale et que vous souhaitiez revenir en arrière. Après avoir vérifié l'état avec exttt{git status}, vous verrez quelque chose comme ceci :

On branch main
nothing to commit, working tree clean

Cela signifie que la branche est à jour, avec HEAD pointant vers le dernier commit. Pour revenir en arrière d’un commit tout en nettoyant la zone de staging, vous pourriez exécuter l'une de ces commandes :

git reset HEAD~1
git reset --mixed HEAD~1

Ces deux commandes auront le même effet. Cela repositionnera HEAD d'un commit en arrière et nettoiera la zone de staging. Si vous exécutez à nouveau exttt{git status}, vous verrez :

On branch main
Changes not staged for commit:  
  (use "git add ..." to update what will be committed)  
  (use "git restore ..." to discard changes in working directory)  
    modified:   example.txt
no changes added to commit (use "git add" and/or "git commit -a")