Git : La commande Restore en français

Comprendre la commande Restore

La commande git restore permet aux développeurs de ramener des fichiers à un état spécifique. Elle est particulièrement utile pour annuler les modifications apportées aux fichiers, que ce soit dans le répertoire de travail ou dans la zone de staging. Ce mécanisme d'annulation est essentiel, surtout lorsqu'il s'agit de revenir sur des modifications, qu'elles soient préparées pour un commit ou pas.

Syntaxe de la commande

La structure de base de la commande git restore se présente ainsi :

git restore  -- 

En plus de cela, il y a neuf options supplémentaires qu'on peut utiliser avec git restore :

  • -s <tree> ou --source=<tree> : Restitue les fichiers du répertoire de travail avec le contenu provenant d'une arborescence spécifiée.
  • -p ou --patch : Permet une sélection interactive des segments de différence entre la source de restauration et l'emplacement de restauration.
  • -W ou --worktree et -S ou --staged : Définissent l'emplacement de restauration. Si aucune option n'est spécifiée, c'est le répertoire de travail qui est restauré par défaut.
  • -q ou --quiet : Supprime les messages de retour et implique --no-progress.
  • --progress et --no-progress : Contrôlent le rapport d'état de progression.
  • --ours et --theirs : Utilisés lors de la restauration des fichiers dans le répertoire de travail depuis l'index, afin d'utiliser l'étape #2 (le nôtre) ou #3 (le leur) pour des chemins non fusionnés.
  • -m ou --merge : Recrée la fusion conflictuelle dans les chemins non fusionnés lorsque l'on restaure des fichiers dans le répertoire de travail depuis l'index.
  • --conflict=<style> : Modifie la présentation des segments conflictuels, en contournant la variable de configuration merge.conflictStyle.
  • --ignore-unmerged : Permet de restaurer des fichiers dans le répertoire de travail depuis l'index sans cesser à cause d'entrées non fusionnées.

Exemple d'utilisation

Prenons un exemple. La commande git status initiale indique qu'il y a des changements dans le fichier index.html qui n'ont pas été mis en staging pour un commit. Elle suggère d'utiliser git add pour ajouter ces modifications. Cependant, l'utilisateur préfère utiliser la commande git restore index.html pour abandonner ces changements dans le répertoire de travail et rétablir le fichier à son dernier état validé. Après l'exécution de cette commande, en vérifiant à nouveau avec git status, le répertoire de travail est maintenant propre, indiquant qu'il n'y a plus de modifications en attente et qu'il n'y a rien à valider.

$ git status
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:   index.html
no changes added to commit (use "git add" and/or "git commit -a")
$ git restore index.html
$ git status
On branch main
nothing to commit, working tree clean