Question Comment puis-je supprimer un seul fichier de la zone de transfert de Git sans le supprimer de l'index ni annuler les modifications apportées au fichier lui-même?


Situation: J'ai un dépôt Git avec des fichiers déjà dans l'index. Je fais des changements à plusieurs fichiers, ouvre Git et ajoute ces fichiers à ma zone de transit avec "git add".

Question: Comment puis-je supprimer un de ces fichiers de la zone de transfert mais ne pas le supprimer de l'index ou annuler les modifications apportées au fichier lui-même?


962
2017-10-01 19:24


origine


Réponses:


Si je comprends bien la question, vous voulez simplement "défaire" le git add cela a été fait pour ce fichier.

Si vous devez supprimer un un seul fichier à partir de la zone de transit, utilisez

git reset HEAD -- <file>

Si vous devez supprimer un répertoire entier (dossier) à partir de la zone de transit, utilisez

git reset HEAD -- <directoryName>

Vos modifications seront conservées. Lorsque vous courez git status le fichier apparaîtra à nouveau comme modifié mais pas encore mis en scène.

Voir le git reset page de manuel pour plus de détails.


1495
2017-10-01 19:29



git rm --cached FILE

,

git rm -r --cached CVS */CVS

137
2018-05-07 12:25



git reset <file>

Fonctionne si oui ou non vous avez des commits précédents.


77
2017-08-13 04:20



Donc, un petit tweak à la réponse de Tim Henigan: vous devez utiliser - avant le nom du fichier. Cela ressemblerait à ceci:

git reset HEAD -- <file>

48
2018-02-21 16:55



git reset filename.txt

Si vous avez une modification dans le fichier filename.txt, vous l'avez ajouté à l'étape par erreur et vous voulez supprimer le fichier de la mise en scène, mais vous ne voulez pas perdre les modifications.


6
2018-03-20 10:53



Si vous souhaitez supprimer des fichiers suivant un certain modèle et que vous utilisez git rm --cached, vous pouvez aussi utiliser des modèles de fichier-glob.

Voir ici.


5
2018-01-04 09:21



Dans le cas où vous souhaitez simplement supprimer un sous-ensemble des modifications apportées à votre fichier, vous pouvez utiliser:

git reset -p

ou

git reset -p <file_name>

Cette commande est fondamentalement l'inverse de git add -p: il supprime uniquement les modifications sélectionnées de la zone de transfert. Je trouve cela extrêmement utile pour "désinscrire" quelque chose que j'ai ajouté par erreur.


5
2018-02-17 22:13



Tu veux:

  • Affecter à un seul fichier

  • Supprimer le fichier de la zone de transit

  • Ne pas supprimer un seul fichier de l'index

  • Ne pas annuler le changement lui-même

et la solution est

git reset HEAD file_name.ext

ou

git reset HEAD path/to/file/file_name.ext

2
2017-10-31 09:33