如何获得 .git/index 的人类可读转储?

How to get a human-readable dump of .git/index?

短版

如何获取 .git/index 的合理详细的、人类可读的转储?


tl;dr 版本

我有两个索引文件,myrepo/.git/indexmyrepo-copy/.git/index 根据 diff ("Binary files ... differ") 而不同。

我想详细了解这两个索引文件的区别。

当然,我可以查看二进制内容的差异,但我对更直接有意义的内容感兴趣。

因此,我正在寻找一种方法来获取这两个索引文件的人类可读转储,我可以将其与 diff 进行比较。

解决您的问题最简单的方法是将其中一个索引文件中的更改提交到临时分支,例如

git checkout -b temp
git commit

然后将您拥有的其他索引文件复制到 .git/index。您现在可以使用 git statusgit diff --staged 等来查看差异。

好的,在我发布问题后,我了解到以下内容生成了相当全面的索引转储:

% git ls-files --stage --debug

我会提出以下建议:

diff <(GIT_INDEX_FILE=/path/to/index1 git ls-files --stage) <(GIT_INDEX_FILE=/path/to/index2 git ls-files --stage)

正如您已经注意到的,您可以添加 --debug 选项以获取有关时间戳和其他内容的信息...