我有一个文件已经添加到我的本地存储库中。我已经在工作树中对其进行了修改,因此git status
向我显示了修改后的文件。在暂存文件之前,我想知道索引中保存的文件内容是什么。
我可以想到两种方法:
- 还原由 生成的补丁
git diff
,并将其应用于工作树中的文件 - 使用
git checkout-index
,指向一个临时文件并从那里读取内容
有没有更简单的方法?
我有一个文件已经添加到我的本地存储库中。我已经在工作树中对其进行了修改,因此git status
向我显示了修改后的文件。在暂存文件之前,我想知道索引中保存的文件内容是什么。
我可以想到两种方法:
git diff
,并将其应用于工作树中的文件git checkout-index
,指向一个临时文件并从那里读取内容有没有更简单的方法?
要将文件从索引中提取出来,我不确定是否有预先存在的脚本方式,但您可以使用它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
(或任何您想要的),它非常灵活。