我在一个存储库中运行该命令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
。我不知道这是否是预期的行为。有人可以向我解释一下这种行为吗?