web-dev-qa-db-fra.com

Comment supprimer un fichier de l'index dans git?

Comment supprimer un fichier de l'index (= zone de stockage intermédiaire = cache) sans le supprimer du système de fichiers?

291
hcs42

Tu veux:

git rm --cached [file]

Si vous omettez l'option --cached, elle sera également supprimée 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 ni à la pointe de la branche ni au fichier sur le disque. (Si ce n'est pas le cas, vous devez ajouter --force.)

402
John Feminella

Ceci devrait décaler un <fichier> pour vous (sans supprimer ou modifier le fichier)

git reset HEAD <file>
113
David Underhill
git reset HEAD <file> 

pour supprimer un fichier particulier de l'index.

et 

git reset HEAD 

pour supprimer tous les fichiers indexés.

1
Abdul Gafoor

En fonction de votre flux de travail, il peut s'agir du genre de choses dont vous avez rarement besoin, et il est inutile d'essayer de trouver une solution de ligne de commande (à moins que vous ne travailliez sans interface graphique pour une raison quelconque).

Utilisez simplement l'un des outils basés sur une interface graphique qui prennent en charge la gestion des index, par exemple:

  • git gui <- utilise le framework de fenêtrage Tk - style similaire à gitk
  • git cola <- une interface graphique de style plus moderne

Celles-ci vous permettent de déplacer des fichiers dans l'index en un clic. Ils prennent même en charge la sélection et le déplacement de parties d'un fichier (modifications individuelles) vers et depuis l'index.


Que diriez-vous d’une perspective différente: si vous vous trompez 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 rendre difficile la recherche. À moins que vous n'ayez vraiment besoin de le faire très fréquemment, l'utilisation d'un outil graphique sera probablement plus sûre .


Travailler sans l'index

Sur la base des commentaires et des votes, je me suis rendu compte que beaucoup de gens utilisent l'indice tout le temps. Je ne. Voici comment:

  • Commettre toute ma copie de travail (le cas typique): git commit -a
  • Commit juste quelques fichiers: git commit (list of files)
  • Commettez tous les fichiers modifiés sauf quelques-uns: git commit -a puis amender via git gui
  • Examinez graphiquement toutes les modifications apportées à la copie de travail: git difftool --dir-diff --tool=meld
0
nobar