Git: ignorer les fichiers suivis


182

J'ai des fichiers suivis dans un référentiel qui sont automatiquement modifiés lors de la construction du code. Je ne veux pas les annuler, je ne veux simplement pas qu'ils apparaissent comme modifiés et je ne veux pas qu'ils soient mis en scène lorsque je git ajouter.

Est-ce possible?



5
Si ces fichiers sont automatiquement générés par la construction, ils ne doivent pas être suivis dans git.
Codebling

Voici un petit tutoriel sur gitignore que vous pourriez trouver utile: learningpassion.wordpress.com/2016/06/17/…
joker

Réponses:


283

Sûr.

git update-index --assume-unchanged [<file> ...]

Pour annuler et recommencer le suivi:

git update-index --no-assume-unchanged [<file> ...]

3
Qu'arrive-t-il aux fichiers dans cet état si j'y apporte des modifications?
haymansfield

2
@haymansfield la page d'aide de la commande dit ce qui suitGit will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.
Parham

3
Un moyen de postuler --assume-unchangedlors du clonage? Pour que tous les utilisateurs aient les fichiers, mais ne voient pas les modifications locales dans les diffs.
Gauthier

10
@Tyler - non, une fois qu'un fichier est suivi par git, il sera toujours suivi, même si ce fichier apparaît dans un .gitignore. Mon cas d'utilisation est quelque chose comme "voici un modèle de base d'un fichier dans lequel vous stockeriez vos informations d'identification, maintenant ne le validez plus".
Jon V

5
@watbywbarif J'ai la commande git update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))définie comme un alias git. Chaque fois que je soupçonne que c'est certaines de ces manigances, je le fais.
Philippe Carphin

6

Une autre approche (à partir d'une réponse maintenant supprimée par Seth Robertson, mais je l'ai trouvé utile pour le ressusciter) est de maintenir un fichier modèle "suivi", puis d'en avoir une version locale non suivie, ex: "config.sample.ini" ou " config.ini.template "voir https://gist.github.com/canton7/1423106 pour un exemple complet.

Ensuite, il n'y aura aucun problème si le fichier est modifié dans git, etc. et vous pouvez utiliser .gitignore (enfin) sur les fichiers locaux non suivis.


5

Une autre solution utilisant les attributs git et% f dans la commande de filtre:

git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude

16
Pourriez-vous donner plus de détails sur ce que cela signifie et ce que cela fait par hasard?
rogerdpack

cela ajoute un filtre pour le fichier qui lit le contenu du fichier ".orig" contenant le texte d'origine
koct9i
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.