Pourquoi .gitignore n'ignore-t-il pas mes fichiers?

128

Voir l'image ci-dessous. Mon fichier .gitignore devrait ignorer tous les fichiers de src / dist, mais ne l'est pas.

entrez la description de l'image ici

Richard
la source

Réponses:

220

.gitignoreignore uniquement les fichiers qui ne font pas encore partie du référentiel. Si vous avez déjà git addédité certains fichiers, leurs modifications seront toujours suivies. Pour supprimer ces fichiers de votre référentiel (mais pas de votre système de fichiers), utilisez- git rm --cachedles.

Elmar Peise
la source
9
git rm --cached file_name.ext fonctionne bien pour que je mette à jour gitignore pour un fichier. Merci.
sybozz
3
Je l'ai fait, mais GitHub souhaite toujours les suivre et les ajouter.
Netside
94

Le fichier .gitignore garantit que les fichiers non suivis par Git restent non suivis.

Le simple fait d'ajouter des dossiers / fichiers à un fichier .gitignore ne les annulera pas - ils resteront suivis par Git.

Pour annuler le suivi des fichiers, il est nécessaire de supprimer du référentiel les fichiers suivis répertoriés dans le fichier .gitignore. Puis rajoutez-les et validez vos modifications.

Le moyen le plus simple et le plus complet de le faire est de supprimer et de mettre en cache tous les fichiers du référentiel, puis de tous les rajouter. Tous les dossiers / fichiers répertoriés dans le fichier .gitignore ne seront pas suivis. À partir du dossier supérieur du référentiel, exécutez les commandes suivantes:

git rm -r --cached . git add .

Puis validez vos modifications:

git commit -m "Untrack files in .gitignore"

Veuillez noter que tout commit précédent avec les fichiers indésirables restera dans l'historique des commit. Lorsque vous poussez vers GitHub, tenez compte d'un historique de validation pouvant contenir des fichiers .envou client_secret.json.

La meilleure pratique consiste à créer un fichier .gitignore et à le remplir avec les dossiers / fichiers que vous ne souhaitez pas suivre lors du démarrage d'un projet. Cependant, il est souvent nécessaire d'ajouter au fichier .gitignore après s'être rendu compte que les fichiers indésirables sont suivis et stockés.

MarckK
la source
Merci pour la réponse. Cela a vraiment aidé. N'oubliez pas non plus de pousser le repo vers git
Chris Reed
Après avoir utilisé la git rm -r --cached .restauration de toutes les modifications fonctionne également pour rajouter tous les fichiers qui ne devraient pas être exclus avec .gitignore .
Adam Hurwitz
8

gitignore ignore uniquement les fichiers non suivis. Vos fichiers sont marqués comme modifiés - ce qui signifie qu'ils ont été validés et le passé et qu'ils sont maintenant suivis par git.

Pour les ignorer, vous devez d'abord les supprimer, git rmles, les valider puis les ignorer.

Igal S.
la source
7

Vous pouvez utiliser ceci,

git rm -r --cached ./node_modules

si vous voulez ignorer node_modules, par exemple

sam r
la source
4

Regardez ceci: .gitignore ne fonctionne pas Et en particulier la remarque de l'ADTC:

Assurez-vous que votre fichier .gitignore utilise le codage ANSI ou UTF-8. S'il utilise quelque chose d'autre comme Unicode BOM, il est possible que Git ne puisse pas lire le fichier. - ADTC 14 décembre 2017 à 12:39

Philippe Raemy
la source
0

Supprimez d'abord le fichier index.lock de votre dépôt git

rm -f .git/index.lock

puis ajoutez .gitignore

git add .gitignore
KayV
la source