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 :
Le répertoire de votre projet est votre copie de travail.
Les fichiers peuvent avoir deux états :
Les fichiers sont marqués comme étant prêts à être commité.
Un git status
permet de voir où nous en sommes.
Les fichiers sont commités dans cette zone par paquets ou commits.
C'est l'archivage du dépôt local.
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.
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 :