Quelle est la différence entre git reset et git rm --cached

1 minute
git reset astuce rm

Quelle est la différence entre un git reset HEAD et un git rm --cached ?

Pour bien comprendre la différence entre les deux, il faut bien comprendre les états d'un fichier.
Il y en a 4 principaux :

  • la copie de travail
  • l'index
  • le dépôt local
  • le dépôt distant

La copie de travail ou Working Copy

Le répertoire de votre projet est votre copie de travail.
Les fichiers peuvent avoir deux états :

  • versionnés
  • non versionné

L'index ou Staging

Les fichiers sont marqués comme étant prêts à être commité.
Un git status permet de voir où nous en sommes.

Le dépôt local ou Tree

Les fichiers sont commités dans cette zone par paquets ou commits.

Le dépôt distant ou remote

C'est l'archivage du dépôt local.

Le git reset HEAD

Il va réinitialisé l'index à l'état où il était avant l'ajout de fichiers ou l'ajout de modications dans l'index (avec le git add).
La copie de travail et l'index seront synchronisés.

Cette commande sera surtout utile pour supprimer un fichier de l'index, c'est à dire pour unstage un fichier.

Le git rm --cached

Il supprime le fichier de l'index seulement et le garde dans la copie de travail (grâce à l'option --cached).
C'est l'exact opposé du git add.
Le fichier passe donc dans l'état non versionné et garde ses modifications.

En cas de de commit, le fichier sera supprimé du dépôt local.

Un bon dessin vaut mieux qu'un long discour :

Différence entre git reset et git rm --cached

Blog Comments powered by Disqus.

Article précédent Article suivant