首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >'git status‘显示已更改的文件,但'git diff’不显示

'git status‘显示已更改的文件,但'git diff’不显示
EN

Stack Overflow用户
提问于 2013-01-28 23:10:07
回答 9查看 118.6K关注 0票数 230

我已经看过所有类似的问题。然而,我仔细检查了一下,肯定发生了一些奇怪的事情。

在一台服务器(Solaris with Git1.8.1)上,我克隆了Git存储库,然后将.git文件夹复制到我现有的活动文件中。这个运行得很好,我可以运行

代码语言:javascript
复制
git status

然后

代码语言:javascript
复制
git diff [filename]

检查任何不同的文件。

但是,在另一台服务器(带有Git 1.7.6的Solaris)上,我正在执行完全相同的操作

代码语言:javascript
复制
git diff [filename]

不显示任何内容,即使文件的内容肯定不同。我还测试了添加新文件、提交文件,然后进行编辑。同样的问题,git status显示文件已更改,但git diff不显示任何内容。如果我下载更改后的文件并在本地运行diff,则会得到diff输出。

EN

回答 9

Stack Overflow用户

发布于 2016-09-27 16:13:15

我遇到了一个问题,某个程序修改了成百上千的行尾,git diff列出了所有更改过的源文件。在修复了行尾之后,git status仍然将文件列为已修改。

我能够通过将所有文件添加到索引,然后重置索引来解决这个问题。

代码语言:javascript
复制
git add -A
git reset

core.filemode设置为false。

票数 50
EN

Stack Overflow用户

发布于 2019-07-15 22:00:27

正如在a previous answer中已经注意到的,这种情况可能是由于行结束问题(CR/LF与LF)造成的。我用下面的命令解决了这个问题(在Git版本2.22.0下):

代码语言:javascript
复制
git add --renormalize .

根据手册:

代码语言:javascript
复制
       --renormalize
           Apply the "clean" process freshly to all tracked files to
           forcibly add them again to the index. This is useful after
           changing core.autocrlf configuration or the text attribute in
           order to correct files added with wrong CRLF/LF line endings.
           This option implies -u.
票数 31
EN

Stack Overflow用户

发布于 2013-02-20 20:44:08

我怀疑可能是你的Git安装或者你的仓库有问题。

尝试运行:

代码语言:javascript
复制
GIT_TRACE=2 git <command>

看看有没有什么有用的东西。如果这样还不能解决问题,那就使用strace,看看出了什么问题:

代码语言:javascript
复制
strace git <command>
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14564946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档