“git diff-index”显示未修改的文件

问题描述 投票:0回答:1

我正在一个存储库中运行命令

git diff-index main
,该存储库的工作树等于分支
main
,但更改缓存在索引中。该命令告诉我存在差异(我理解这是工作树和分支
main
之间)。但没有什么区别。

最小示例

首先设置存储库

$ git init -b main /tmp/repo
Initialized empty Git repository in /tmp/repo/.git/
$ cd /tmp/repo
$ (main #) ls -AF
.git/
$ (main #) echo hello > world
$ (main #%) git add .
$ (main +) git commit -m hello
[main (root-commit) 14a90af] hello
 1 file changed, 1 insertion(+)
 create mode 100644 world
$ (main) echo bye > world
$ (main *) git add .
$ (main *+) echo hello > world

验证文件

world
main
和工作树

中是否相同
$ (main *+) git hash-object world
ce013625030ba8dba906f756967f9e9ca394464a
$ (main *+) git ls-tree -r main  | grep world
100644 blob ce013625030ba8dba906f756967f9e9ca394464a    world

但是运行时

git diff-index main
,它告诉我有差异

$ (main *+) git diff-index main
:100644 100644 ce013625030ba8dba906f756967f9e9ca394464a 0000000000000000000000000000000000000000 M      world

此外,当运行

git diff-index -p main
时,要看到差异,它没有向我显示任何内容。

$ (main *+) git diff-index -p main

也许我误解了一些事情

git diff-index
。我不知道这是否是预期的行为。有人可以向我解释一下这种行为吗?

git git-diff git-plumbing
1个回答
0
投票
echo bye > world
git add .

您已将文件的修改内容添加到索引中。

world

echo hello > world
现在你又改变了文件;文件和索引之间存在差异。 

git diff-index

 显示差异。如果您这样做
git add .
,那么差异就会消失。

© www.soinside.com 2019 - 2024. All rights reserved.