Comment ignorer les fichiers qui se trouvent dans le référentiel?

93

J'ai un fichier (config.php), qui est déjà validé dans le référentiel Git, mais je veux l'ignorer localement, c'est-à-dire que je veux que ce fichier reste dans le référentiel, mais force Git à ignorer toute modification.

J'ai mis le fichier dans .gitignore, mais il est toujours marqué comme modifié et Git essaie toujours de valider les modifications, chaque fois que je valide quelque chose. Une idée, qu'est-ce que je manque ou que je fais mal?

prcaen
la source
veuillez ajouter votre fichier .gitignore - de cette façon, nous pourrions voir des problèmes à son sujet.
Lars

Réponses:

189

Si le fichier est toujours affiché dans l'état, même s'il est dans le .gitignore, assurez-vous qu'il n'est pas déjà suivi.

git rm --cached config.php

Si vous voulez simplement l'ignorer localement, vous pouvez également le rendre ignoré par le statut git:

git update-index --assume-unchanged config.php
VonC
la source
1
OK merci ! Si je fusionne ma branche avec une autre, ce fichier peut-il poser des problèmes?
prévu
1
@ Nimbus147: cela ne devrait pas être un problème, et tout changement sur ce fichier sera toujours ignoré (c'est-à-dire non ajouté / validé).
VonC
si vous utilisez SmartGit, vous devez utiliser remove pour ce faire.
Omid-RH
1
Existe-t-il un moyen de forcer update-index --assume-unchangedsur la branche distante? Je souhaite conserver le fichier dans le dépôt, mais je ne pourrai pas être modifié par d'autres mais de plus non disponible pour la mise en scène.
p014k
1
@ p014k Pas que je sache. Pour ce type de fichier, je le garde versionné sous un nom différent, puis j'utilise un pilote de fichier de contenu pour générer automatiquement le bon fichier (privé) en cas de besoin. Ce filtre ne serait pas actif sur scène par exemple. Voir stackoverflow.com/a/54454356/6309 et son lien associé.
VonC
6

Ignorer le fichier archivé:

git update-index --assume-unchanged file

Pour revenir

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

Tout annuler

git update-index --really-refresh 
Shiva Kumar
la source
Utile. Rétablir un fichier a fonctionné, mais pas tout.
Adem Tepe
4

Si le fichier est déjà dans le référentiel, et par conséquent dans la zone Index / Staging, alors une mise à jour vers .gitignore ne changera pas cette situation - elle continuerait d'être validée.

Pour supprimer le fichier de la zone Index / Staging, utilisez git rm <file>.

Philip Oakley
la source
Que faire si le fichier se trouve dans le référentiel mais n'est pas encore mis en scène? J'essaye d'ignorer les fichiers * .log, mais je les vois toujours sous "Modifications". Je veux tout ignorer, que faire?
Sandra K
@SandraK s'il existe une version plus ancienne de ce fichier (chemin de fichier / nom) déjà dans le dépôt lors de la dernière validation, alors il est considéré comme suivi - l'index aura ce fichier dans ses enregistrements, et statuscontinuera donc à vous dire à propos de ces changements. Si vous souhaitez ignorer les fichiers * .log, à la fois pour les fichiers précédemment cloués et actuellement non suivis, vous devez les deux git rm *.loget mettre à jour votre fichier .gitignore. Vérifiez d'abord si certains fichiers journaux sont réellement importants ... Il est facile d'oublier celui-là spécial ;-)
Philip Oakley
-3

Une fois qu'un fichier est répertorié dans le .gitignore, vous ne pouvez pas le modifier.

Vous pouvez donc supprimer le fichier de la liste dans un commit, valider les changements le suivant, puis rajouter le fichier à la liste des ignorés dans un troisième commit par la suite.

Ce que je fais habituellement est de diviser le fichier en deux, un qui est autorisé et que je peux changer, ce qui inclut le deuxième fichier s'il existe, alors les développeurs peuvent éventuellement apporter des modifications de configuration dans le fichier ignoré.

Erikvold
la source
1
" Une fois qu'un fichier est répertorié dans le .gitignore, vous ne pouvez pas le modifier " - pouvez-vous clarifier, que voulez-vous dire? J'ai beaucoup de fichiers dans beaucoup de mes .gitignores et je change constamment ces fichiers! C'est la première fois, j'entends quelqu'un dire, qu'une fois que j'ajoute un fichier .gitignore, je ne peux pas le changer.
trejder
1
Il a en fait tort. Vous pouvez les changer. Git ne les télécharge tout simplement pas, ni ne vous donne même la possibilité de les télécharger.
David