`git diff`没有显示任何更改?为什么呢?

7

我在一个git仓库中,其中做了一些更改。所以我首先运行了git status命令,它显示有一个文件已更改。然后我运行了git diff命令来查看更改情况,但是它没有输出任何内容(请参见下面的输出),甚至没有模式更改或其他任何东西。

有人知道为什么git diff命令在明显有更改的情况下不输出任何内容吗?欢迎提供所有提示!

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   src/app/models/VariablePosition.py

no changes added to commit (use "git add" and/or "git commit -a")
$ git diff
$

[编辑] 有人问了git config core.filemode的输出结果:

$ git config core.filemode
true

3
@FredericHenri胡说,提交后它不会出现在git diff中,因为您将会与您刚刚进行的提交进行比较。 - Tim
1
@Tim,阅读此文:https://dev59.com/Qmkw5IYBdhLWcg3wPIF7 - Frederic Henri
3
@FredericHenri Tim是正确的,简单的 $ git diff 命令会显示工作目录和索引之间的差异。 - Thomas Stringer
你是如何修改这个文件的?你只是改变了这个文件的权限吗?你使用的是哪个版本的 git - Arkadiusz Drabczyk
2
@bcmcfc 将 core.filemode 设置为 falsegit diff 就不会显示仅有权限更改的文件的更改。 - jub0bs
显示剩余7条评论
2个回答

0

不确定你的问题是否相同,但我在 Mac 上遇到了这个问题,因为我的配置文件是从 Linux 机器复制过来的。

问题似乎与分页器有关,所以我查看了我的 LESS 环境变量,发现是--quit-if-one-screen选项出现问题,就像这里描述的一样:

https://unix.stackexchange.com/q/107315

显然,当返回时,它会进入备用屏幕并丢失输出。有一个答案说这在版本530中已经修复了。(我的Linux机器版本低于551,而Big Sur上的Mac版本是487。)

我从变量中移除了该选项,git diff就恢复正常了。


-1

你的文件仍在工作目录中。使用 git add 文件名后,它将进入暂存区,提交后将包含在 git 存储库中。 然后只有 git 才会考虑并显示差异。 还可以尝试使用 git diff 分支名称。 默认情况下,git diff 与主分支进行比较,如果您已经在主分支上,则不会显示任何差异,因为它正在与主分支进行比较。


你的理论在这里不适用。在Git状态中,该文件显示为“已修改”,这意味着它已经被跟踪。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接