У меня есть .gitattributes чистый фильтр для удаления все комментарии из файла перед фиксацией.
$ cat .git/config
[filter "cleancomments"]
clean = "grep -v '^#'"
$ cat .gitattributes
* filter=cleancomments
И у меня есть файл «тест» со следующим содержимым (зафиксирован в репозитории):
This is a file with random content
Теперь я вношу изменения в «тест» и добавляю комментарии:
This is a file with random content
# and some comments
# like this
git status
теперь говорит мне:
modified: test
но git diff
пусто (как и должно быть).
Мне не совсем понятно, почему git status не использует фильтр, чтобы решить, был ли файл изменен или нет, но я предполагаю, что именно так это реализовано.
Что действительно загадочно для меня, так это следующее:
Если я сделаю это:
git add test
Затем внезапно файл «тест» больше не помечается как измененный и не отображается в индексе git. Почему это?