git status显示未修改的文件已被修改,并且git diff无法哈希它们

XavierStuvw

Ubuntu 16.04,git版本2.7.4

我一直在本地开发一些代码,这些代码也可以远程托管。今天,偶尔还有其他几次,接下来会发生什么。其他时候,它只是在经过怀疑的等待后消失了,但是现在看来,它是持久的。

步骤1,通过:将当前分支与远程同步

git pull
已经是最新的。

步骤2,失败:检查状态,新修改的文​​件突然显示出来

git状态

在分支[mybranch]上,
分支的最新信息是'origin / [mybranch]'。
未进行提交的更改:(
使用“ git add ...”更新将提交的内容)
(使用“ git checkout-...”放弃工作目录中的更改)

大约有30多个文件被修改,即使我不太认为它们已被更改

(重新启动后,它们已变为15,不稳定。再次重新启动后,是3.。请注意:对文件无任何操作)

步骤3:查询会有什么不同

用几个文件探查情况,我得到了

git diff ../../ [目录] / [目录] / [文件] .md5
错误:短读没有这样的文件或目录
错误:[目录] / [目录] / [文件] .md5:无法插入数据库
致命:无法哈希[目录] / [目录] / [文件] .md5

研究

Git的想法显示在更改文件权限后所有文件都已修改,我认为最近没有更改权限。这些文件是僵化的。

问题

这种情况的可能原因是什么,如何防止这种情况再次发生?

为何它有时会自我修复并在他人身上坚持下去?

XavierStuvw

Ubuntu 16.04,Git版本2.7.4,Doxygen 1.8.12

诊断

有问题的文件是Doxygen文档的元素,并存储在507M和19,415个文件的单个目录中。这可能使我的第一个假设git的记帐感到困惑。

治愈

Doxygen在配置文件中有一个选项可以将文件分发到不同的目录中,实际上具有类似于git的树状结构

#如果CREATE_SUBDIRS标记设置为YES,则doxygen将
在每种输出格式的输出目录下创建4096个sub-目录(分2级),并且
#将在这些目录中分发生成的文件。
在给doxygen喂入大量源文件时,启用此#选项很有用,其中
#将所有生成的文件放在同一目录中,否则会导致
#文件系统的性能问题。
#默认值为:NO

CREATE_SUBDIRS =

我将其设置为是,然后循环

git status; git add .; git commit -m ...; git push

几次,直到我得到:

git status
在分支[mybranch]上
您的分支是最新的'origin / [mybranch]'。
无需提交,工作目录干净

可以解决上述步骤2中的问题。

琐事

对于好奇的读者,我发现这些其他职位样的证实我的做法,至少给我一些线索,这是值得一试:

希望提高答案质量的任何专家/经验丰富的客人,请成为我的客人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Git无法检测到已被修改的文件

git status显示修改过的文件,但是git diff什么都不显示

为什么“ git status”在二进制文件未修改且文件模式相同时显示修改后的二进制文件

git status显示修改,git checkout-<file>不会删除它们

Git將未修改的文件顯示為已修改

git diff如何判断行是否已被修改或添加?

Git diff仅显示已修改的行

Gitlab CI:git diff 显示旧的修改

git checkout 导致无法添加的修改文件

完成 npm 审计修复后, git status 会显示一堆修改/删除的 node_modules 文件。我怎样才能忽略它们或删除它们?

Visual Studio 2019 - Git - 与未修改的比较

修改后的git标签名称和消息现在已被拒绝,因为它们已经存在

如何改善我的解决方案,以重置在Git中显示为已修改但根据“ git diff”没有更改的文件?

git是否在push或diff期间传输整个修改过的文件?

git clone之后文件显示为已修改,并且此文件不存在

更新修改的文件-git

git藏匿修改文件?

Git rebase导致基本上所有文件上的合并冲突-甚至是未修改的文件

Git:只有一些未修改但已删除的文件是合并冲突。为什么?

Git合并仅将传入的更改应用于未修改的文件

当由LESS生成或行分隔符已更改时,Git将未修改的文件标记为已修改

git status 显示现有文件已被删除

'git difftool'仅修改文件

在“ git add”之后修改文件

Git:更改文件的“修改”属性

Git不会添加修改的文件

如果已修改git中文件和目录的权限,如何恢复它们?

git rebase:“无法应用(哈希)。” 我迷路了

git status在内部与git diff如何不同以显示未跟踪的文件?