Comment supprimer un fichier de l'index (= zone de transit = cache) sans le supprimer du système de fichiers?
Comment supprimer un fichier de l'index (= zone de transit = cache) sans le supprimer du système de fichiers?
Réponses:
Tu veux:
git rm --cached [file]
Si vous omettez cette --cached
option, 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 pas à la pointe de la branche ou au fichier sur le disque. (Si ce n'est pas le cas, vous devez ajouter --force
.)
git rm --cached
pour les supprimer du référentiel, ajouter les fichiers ou répertoires pertinents à .gitignore, mettre en scène et valider normalement. Ils disparaîtront du dépôt mais resteront intacts dans votre arbre local, et vous ne les archiverez plus accidentellement.
Cela devrait supprimer un <fichier> pour vous (sans supprimer ou autrement modifier le fichier):
git reset <file>
HEAD
.
HEAD
!
git reset HEAD <file>
pour supprimer un fichier particulier de l'index.
et
git reset HEAD
pour supprimer tous les fichiers indexés.
Selon votre flux de travail, cela peut être le genre de chose dont vous avez rarement besoin pour qu'il soit inutile 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
<- utilise le cadre de fenêtrage Tk - style similaire à gitk
git cola
<- une interface graphique de style plus moderneCeux-ci vous permettent de déplacer des fichiers dans et hors de l'index par pointer-cliquer. 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 réelle chance de perdre des données - ou du moins de les rendre difficiles à trouver. À moins que vous n'ayez vraiment besoin de le faire à très haute fréquence, l' utilisation d'un outil GUI est susceptible d'être plus sûre .
Sur la base des commentaires et des votes, j'ai réalisé que beaucoup de gens utilisent l'index tout le temps. Je ne. Voici comment:
git commit -a
git commit (list of files)
git commit -a
puis modifiez viagit gui
git difftool --dir-diff --tool=meld
git commit -a
. Lorsque je répondais à cette question, c'était parce que j'avais fait (une exotique) " sélection de cerise inverse " qui met les fichiers dans l'index pour vous, mais je voulais éditer un fichier avant de valider. J'ai retiré le fichier de l'index pendant que je le modifiais pour que les différences fonctionnent comme d'habitude.
rm
immédiatement, mais j'ai d'abord pensé que changer de branche ne tuerait pas le dossier ignoré . mais ... J'utilise l'outil github "basé sur gui" qui est assez bon pour moi et supporte une certaine gestion d'index, sauf qu'il ne le supporte pas. alors quoi, dois-je utiliser 2 gui pour une utilisation étroite? ne peut toujours pas être d'accord avec la réponse.