Comment supprimer un fichier de l'index dans git?
Comment supprimer un fichier de l'index (=staging area = cache) sans le supprimer du système de fichiers?
4 réponses
Vous voulez:
git rm --cached [file]
Si vous omettez l'option --cached
, elle la supprimera également de l'arborescence de travail. git rm
est légèrement plus sûr que git reset
, car vous serez averti si le contenu mis en scène ne correspond pas à la pointe de la branche ou au fichier sur le disque. (Si ce n'est pas le cas, vous devez ajouter --force
.)
Cela devrait détacher un pour vous (sans supprimer ou modifier le fichier):
git reset HEAD <file>
git reset HEAD <file>
Pour supprimer un fichier particulier de l'index.
Et
git reset HEAD
Pour supprimer tous les fichiers indexés.
En fonction de votre flux de travail, cela peut être le genre de chose dont vous avez rarement besoin pour qu'il ne soit pas utile d'essayer de trouver une solution en ligne de commande (à moins que vous ne travailliez sans interface graphique pour une raison quelconque).
Utilisez simplement l'un des outils basés sur L'interface graphique qui prennent en charge la gestion des index, par exemple:
-
git gui
gitk - {[2] }
Ceux-ci vous permettent de déplacer des fichiers dans et hors de l'index par pointer-cliquer. Ils ont même un support pour sélectionner et déplacer des parties d'un fichier (modifications individuelles) vers et depuis l'index.
Que diriez-vous d'une perspective différente: si vous gâchez tout en utilisant l'une des commandes suggérées, plutôt cryptiques:
git rm --cached [file]
git reset HEAD <file>
...vous avez une chance réelle de perdre des données - ou du moins de le rendre difficile à trouver. À moins que vous vraiment besoin de le faire avec une fréquence très élevée, en utilisant un outil GUI est susceptible d'être plus sûr .
Travailler sans l'index
Sur la base des commentaires et des votes, je me suis rendu compte que beaucoup de gens utilisent l'index tout le temps. Je ne sais pas. voici comment:
- Commettre toute ma copie de travail (le cas typique):
git commit -a
- Commettre quelques fichiers:
git commit (list of files)
- Commettre quelques mais tous les fichiers modifiés:
git commit -a
, puis modifier viagit gui
- revoir graphiquement toutes les modifications apportées à la copie de travail:
git difftool --dir-diff --tool=meld