git - 为什么 git 不显示我的文件已修改?
问题描述
更改文件
我修改了磁盘上的一个文件,运行git status
,说没有任何改变。运行git update-index --really-refresh
并显示修改后的文件。
几周以来,我每天都会遇到几次这个错误,我怀疑它是一个新的 git4win 错误,甚至可能与 Windows 文件系统有关。自从 15 年前出现以来,我一直在使用 git,所以它不是“我忘记了 X”。在过去的两个小时内,我已经发生了四次错误。然后我什至有一个小时的午休时间!
$ git --version
git version 2.23.0.windows.1
坏理论
我最初认为这可能与我单独安装的适用于 Linux-git 的 Windows 子系统有关。删除该安装并再次克隆我的所有存储库(第 N 次)后,我仍然收到此错误。
修改添加的文件
git 缺少我修改过的文件也适用于已经添加但此后被修改过的文件。这导致我提交+推送许多我已经查看+编译的文件(在我的 IDE 或 cli 中),但它们的内容并不相同,而且确实如此。当我运行时update-index --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:我错误地向IDEA 社区版提交了一个错误,而根本原因是我的公司主目录 ( H:\
) 有一个 .gitconfig,其中包含core.ignoreStat=true
. 我在 bash.exe/msys ( C:\Users\xxx\
) 中使用的 .gitconfig 没有。通过设置修复core.ignoreStat=false
。
推荐阅读
- python-3.x - 为聚合列提供别名并在 pyspark 中使用 groupBy 对结果进行四舍五入
- mysql - MYSQL - 比较来自两个不同表的行并返回两行之间的差异
- scala - 有什么更好的方法来制作一个对任何数字原语的列表求和的通用方法?
- jquery - jQuery Mask插件在同一元素上的电话号码的多个掩码不起作用
- youtube-dl - youtube-dl 没有下载最好的单文件版本
- python - Wavefile.read 给出文件格式 b'\x00\x00\x00\x1c'... 不明白
- mongodb - 更新所有文档 - 根据子集合中的订单设置子集合订单字段
- c# - 实体框架:ChangeTracker 加载我所有的表格元素
- ms-access - 访问未绑定的表单字段以更新多个表
- c# - await Task.Delay of over 15 ms doesn't wait long enough