我有一个已经添加到本地存储库的文件。我在工作树中对其进行了修改,因此git status
向我显示了已修改的文件。我想知道在暂存文件之前索引中保存的文件内容是什么。
我可以想到两种方法:
git diff
生成的修补程序,并将其应用于工作树中的文件git checkout-index
,指向临时文件并从中读取内容有更简单的方法吗?
答案 0 :(得分:53)
答案 1 :(得分:8)
要从索引中捕获文件,我不确定预先存在的可编写脚本的方式,但您可以使用ls-files
来查询索引:
$ git ls-files -s README
100644 67cfeb2016b24df1cb406c18145efd399f6a1792 0 README
$ git cat-file blob 67cfeb2016b24df1cb406c18145efd399f6a1792
# etc.
你可以像这样把命令放在一起:
git cat-file blob $(git ls-files -s README | awk '{print $2}')
(虽然我肯定在这里重新发明轮子。)
但是,如果您只想在编辑器中打开原始文件和更改,请使用difftool
命令。它会将索引版本复制到您的临时文件中并打开vimdiff
(或您想要的任何内容),并且非常灵活。
答案 2 :(得分:3)