更改文件
我修改了磁盘上的文件,运行git status
,没有任何变化。运行 git update-index --really-refresh 并显示修改后的文件。
几周以来,我每天都会遇到这个错误几次,我怀疑这是一个新的 git4win 错误,甚至可能与 Windows 文件系统有关。自从十五年前 git 诞生以来我就一直在使用它,所以这并不是“我忘记了 X”。在过去的两个小时内,我已经发生了四次该错误。然后我什至还享受了一小时的午休时间!
$ git --version
git version 2.23.0.windows.1
糟糕的理论
我最初认为这可能与我单独安装的 Windows Subsystem for Linux-git 有关。删除该安装并再次克隆所有存储库(第 N 次)后,我仍然收到此错误。
修改已添加的文件
git 丢失我修改的文件也适用于已经添加但之后修改过的文件。这导致我提交+推送了很多我已经审查+编译过的文件(无论是在我的 IDE 中还是在 cli 上),但它们的内容并不相同,而且确实如此。当我运行 update-index --really-refresh
时,我发现我已经推送了最初添加的文件,但没有推送我修改和编译的文件。
它不是什么
这与 gitignore 无关,因为这发生在已经添加的文件上(参见上面的第二种情况)。它与 WSL 没有直接关系,因为我已经在那里卸载了 git。我没有奇怪的 git 设置:
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
credential.helper=manager
diff.astextplain.textconv=astextplain
user.name=Jonas Bystrom
user.email=...
core.autocrlf=true
core.pager=less -F -X
core.longpaths=true
alias.ca=commit -a
alias.nb=checkout -b
alias.quicklog=log --pretty=format:"%h %cr %cn %Cgreen%s%Creset"
alias.logdiff=log -p --stat
alias.search=log --source --all -p --decorate=full -G
push.default=upstream
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=ssh://...
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
我不知道该尝试什么。欢迎任何有关尝试的指示!
最佳答案
直接原因是我的文件已经“假设不变”,你可以通过查看
$ git ls-files -v pom.xml
h pom.xml
那个 h
标志意味着 git 在查找修改的文件时应该忽略它。修复方法:
git update-index --no-assume-unchanged pom.xml
编辑 2:我错误地使用 IDEA community edition 提交了一个错误,而根本原因是我的公司主目录 (H:\
) 有一个包含 core.ignoreStat=true
的 .gitconfig。我在 bash.exe/msys (C:\Users\xxx\
) 中使用的 .gitconfig 没有。通过设置 core.ignoreStat=false
进行修复。
关于git - 为什么 git 不显示我的文件已修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182974/