web-dev-qa-db-fra.com

git n'ignore pas 2 fichiers nommés spécifiquement

Je veux exclure automatiquement 2 fichiers de la validation, qui font partie du référentiel git mais ont des changements, qui ne devraient pas faire partie du dépôt github, car ils ont des changements qui ne sont significatifs que pour mon système local et pas l'autre les développeurs.

Je les ai ajoutés à .git/info/exclude dans l'espoir que git comprenne qu'il ne devrait pas y apporter de modifications:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
a.conf
b.conf
# *~

mais git status les répertorie toujours en tant qu'étapes de validation:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   build/conf/a.conf
#   modified:   build/conf/b.conf
#

Je ne veux pas les déchaîner régulièrement à chaque commit (une fois je pourrais juste oublier), comment faire?

64
erikbwork

Ce que vous voulez, c'est ignorer les modifications apportées aux fichiers suivis. Cela ne peut pas être réalisé (comme Charles Baileydit ) correctement, ni avec .gitignore ni avec .git/info/exclude.

Vous devrez utiliser git update-index :

git update-index --assume-unchanged build/conf/a.conf
git update-index --assume-unchanged build/conf/b.conf

réalisera ce que vous voulez: les fichiers sont toujours supposés inchangés.

Si vous souhaitez suivre à nouveau les modifications de ces fichiers, utilisez --no-assume-unchanged.

Enfin, si vous voulez savoir quels fichiers se trouvent actuellement dans le --assume-unchanged mode, demandez à git

git ls-files -v | grep -e "^[hsmrck]"
136
eckes