Appliquer.gitignore à commis des fichiers

j'ai commis des charges de fichiers que je veux maintenant ignorer. Comment puis-je dire à git d'ignorer ces fichiers de futures propagations?

EDIT: je ne veux pas les supprimer à partir du référentiel. Ce sont des fichiers créés après chaque compilation ou pour un support d'outils spécifique à l'utilisateur.

321
git
demandé sur user880954 2011-09-23 15:02:14

6 réponses

après avoir édité .gitignore pour faire correspondre les fichiers ignorés, vous pouvez faire git ls-files -ci --exclude-standard pour voir les fichiers qui sont inclus dans les listes d'exclusion; vous pouvez ensuite faire git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached pour les supprimer du dépôt (sans les supprimer du disque).

Edit : vous pouvez aussi ajouter ceci comme alias dans votre .gitconfig fichier de sorte que vous pouvez l'exécuter à tout moment vous voulez. Il suffit d'ajouter la ligne suivante dans la section [alias]:

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(le drapeau -r dans xargs empêche git rm de tourner sur un résultat vide et d'imprimer son message d'utilisation, mais ne peut être supporté que par GNU findutils. D'autres versions de xargs peuvent ou non avoir une option similaire.)

maintenant vous pouvez taper git apply-gitignore dans votre repo, et il fera le travail pour vous!

540
répondu Jonathan Callen 2017-05-13 00:22:37

pour conserver le fichier dans le repo mais ignorer les modifications futures:

git update-index --assume-unchanged <file>

et pour annuler ceci:

git update-index --no-assume-unchanged <file>

pour savoir quels fichiers ont été configurés de cette façon:

git ls-files -v|grep '^h'

crédit pour la réponse originale à http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files /

100
répondu ben.tiberius.avery 2014-10-07 21:55:17

assurez-vous que votre rapport actuel est la dernière version

  1. Modifier .gitignore comme tu veux
  2. git rm -r --cached .
  3. git add .

puis engagez-vous comme d'habitude

41
répondu Théo Attali 2017-05-22 18:07:05

Vieille question, mais certains d'entre nous sont dans git-posh (powershell). C'est la solution pour cela:

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
9
répondu Crisfole 2015-02-11 15:46:41

suivez ces étapes:

  1. Ajouter un chemin d'accès à gitignore fichier

  2. exécuter cette commande

    git rm -r --cached foldername
    
  3. valider les modifications, comme d'habitude.

0
répondu Kalyan Chakravarthi V 2017-04-20 07:45:03