我有一个文件已添加到本地版本库中。我在工作树中修改了它,所以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}')
< p>(尽管我肯定是在重复造轮子。)
然而,如果你只想在编辑器中打开原始版本和你的更改,请使用difftool
命令。它会将索引版本复制到临时文件中,并为您打开vimdiff
(或任何您想要的),非常灵活。
git show :./file
来表示相对路径。 - kyb