为什么git不显示修改后的文件? 更改文件
我修改磁盘上的一个文件,运行git status,表示没有任何更改。运行为什么git不显示修改后的文件? 更改文件,git,msysgit,Git,Msysgit,我修改磁盘上的一个文件,运行git status,表示没有任何更改。运行git update index--really refresh,修改后的文件就会显示出来 自从几个星期以来,我每天都会遇到好几次这个bug,我怀疑这是一个新的git4win bug,甚至可能与Windows文件系统有关。我从15年前git问世以来就一直在使用它,所以它不是“我忘了X”。在过去的两个小时里,我已经发生了四次错误。然后我甚至有一个小时的午休时间 $ git --version git version 2.23.
git update index--really refresh
,修改后的文件就会显示出来
自从几个星期以来,我每天都会遇到好几次这个bug,我怀疑这是一个新的git4win bug,甚至可能与Windows文件系统有关。我从15年前git问世以来就一直在使用它,所以它不是“我忘了X”。在过去的两个小时里,我已经发生了四次错误。然后我甚至有一个小时的午休时间
$ git --version
git version 2.23.0.windows.1
坏理论
我最初认为它可能与我单独安装的Linux git的Windows子系统有关。在删除该安装并再次克隆我的所有存储库之后(第n次),我仍然会遇到此错误
修改添加的文件
git missing my modified files也适用于已添加但已修改的文件。这导致我提交并推送了很多我已经审阅并编译过的文件(无论是在IDE中还是在cli中),但它们的内容并不相同,这一点是肯定的。当我运行updateindex--really refresh
时,我看到我推送了最初添加的文件,但没有推送我修改和编译的文件
它不是什么
这与git ignore无关,因为这发生在已经添加的文件上(参见上面的第二个场景)。它与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:我错误地向提交了一个错误,而根本原因是我的公司主目录(
H:\
)有一个.gitconfig,其中包含core.ignoreStat=true
。我在bash.exe/msys(C:\Users\xxx\
)中使用的.gitconfig没有。通过设置core.ignoreStat=false进行修复
确保文件未被忽略?你可以用它来检查。@BagusTesa:我绝对100%肯定。在过去的几周里,这种情况已经发生了几十次。不是每次我更改一个文件都会发生这种情况,但肯定会超过十分之一。在百灵鸟上,你能试着将fscache
设置为false
?@LasseVågsætherKarlsen:刚刚做了,然后重新安装了msysgit。如果有帮助,请告诉你。如果是的话,你必须把它写下来作为答案。:)安装之后,一切似乎都好多了。甚至bash中的制表符完成以前也很慢,但现在它的行为与正常情况类似。它可能是fscache(或者可能是与某个东西上的-i/-p有关的实验性特性)。您为什么要使用msysgit,而不是?甚至有人说Git for windows已经取代了它。