Comment supprimer un fichier de l'index (= zone de stockage intermédiaire = cache) sans le supprimer du système de fichiers?
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
.)
Ceci devrait décaler un <fichier> 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, 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 moderneCelles-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 .
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:
git commit -a
git commit (list of files)
git commit -a
puis amender via git gui
git difftool --dir-diff --tool=meld