Подтвердить что ты не робот

Git не игнорирует 2 специально названных файла

Я хочу автоматически исключить 2 файла из фиксации, которые являются частью репозитория git, но имеют некоторые изменения, которые не должны быть частью репозитория github, поскольку у них есть некоторые изменения, которые имеют смысл только для моего локального системы, а не других разработчиков.

Я добавил их в .git/info/exclude в надежде, что git понимает, что он не должен вносить в них изменения:

# 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
# *~

но git status все еще перечисляет их как поставленные для совершения:

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

Я не хочу регулярно их отключать с каждой фиксацией (однажды я мог бы просто забыть), как я могу это сделать?

4b9b3361

Ответ 1

Что вы хотите - игнорировать изменения в отслеживаемых файлах. Этого нельзя достичь (как Чарльз Бейли говорит) правильно, ни с .gitignore, ни с .git/info/exclude.

Вам понадобится git update-index:

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

достигнет того, чего вы хотите: файлы всегда считаются неизменными.

Если вы хотите снова отслеживать изменения в этих файлах, используйте --no-assume-unchanged.

Наконец, если вы хотите узнать, какие файлы находятся в режиме --assume-unchanged, спросите git для

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