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 ...我想我启用它是为了加速分支名称自动完成。回想起来,这没有任何意义。
我第一次遇到这个问题是在现有的存储库中。作为测试,我对跟踪文件进行了更改。 运行 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 ...我想我启用它是为了加速分支名称自动完成。回想起来,这没有任何意义。