如何获得 .git/index 的人类可读转储?
How to get a human-readable dump of .git/index?
短版
如何获取 .git/index
的合理详细的、人类可读的转储?
tl;dr 版本
我有两个索引文件,myrepo/.git/index
和 myrepo-copy/.git/index
根据 diff
("Binary files ... differ") 而不同。
我想详细了解这两个索引文件的区别。
当然,我可以查看二进制内容的差异,但我对更直接有意义的内容感兴趣。
因此,我正在寻找一种方法来获取这两个索引文件的人类可读转储,我可以将其与 diff
进行比较。
解决您的问题最简单的方法是将其中一个索引文件中的更改提交到临时分支,例如
git checkout -b temp
git commit
然后将您拥有的其他索引文件复制到 .git/index
。您现在可以使用 git status
、git 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
选项以获取有关时间戳和其他内容的信息...
短版
如何获取 .git/index
的合理详细的、人类可读的转储?
tl;dr 版本
我有两个索引文件,myrepo/.git/index
和 myrepo-copy/.git/index
根据 diff
("Binary files ... differ") 而不同。
我想详细了解这两个索引文件的区别。
当然,我可以查看二进制内容的差异,但我对更直接有意义的内容感兴趣。
因此,我正在寻找一种方法来获取这两个索引文件的人类可读转储,我可以将其与 diff
进行比较。
解决您的问题最简单的方法是将其中一个索引文件中的更改提交到临时分支,例如
git checkout -b temp
git commit
然后将您拥有的其他索引文件复制到 .git/index
。您现在可以使用 git status
、git 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
选项以获取有关时间戳和其他内容的信息...