我有一个.gitattributes clean 过滤器,可以在提交之前从文件中删除所有评论。
$ 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
然后突然文件'test'不再被标记为已修改并且它没有出现在git索引中。为什么是这样?