Git 正在对文件设置 assume-unchanged 位

Git is setting assume-unchanged bit on files

我第一次遇到这个问题是在现有的存储库中。作为测试,我对跟踪文件进行了更改。 运行 git status 显示文件已修改。然后我做了 git reset --hard HEAD 来撤消该更改,因为这是我所做的唯一更改。之后,运行 git ls-files -v | grep '^[[:lower:]]' 显示带有小写 h 的文件,这意味着设置了假设不变位。我以前没有自己设置过这个位。

作为另一个测试,我做了以下操作:

/c/Source/git/test
$ echo "123" > a

/c/Source/git/test
$ echo "456" > b

/c/Source/git/test
$ git init
Initialized empty Git repository in C:/Source/git/test/.git/

/c/Source/git/test (master)
$ git add a b

/c/Source/git/test (master)
$ git commit -m "first"
[master (root-commit) c5bfb90] first
 2 files changed, 2 insertions(+)
 create mode 100644 a
 create mode 100644 b

/c/Source/git/test (master)
$ git ls-files -v
h a
h b

/c/Source/git/test (master)
$

我不明白发生了什么。为什么 git 将这些文件标记为假设未更改?

原来我将 core.ignoreStat 设置为 true。 git config --global core.ignoreStat false 修复了它。不知道为什么我启用了 ignoreStat ...我想我启用它是为了加速分支名称自动完成。回想起来,这没有任何意义。