zaz*_*aza 31 git git-diff git-status
我有一个已经添加到我的本地存储库的文件.我在工作树中对其进行了修改,因此git status
将文件显示为已修改.我想知道在暂存文件之前索引中保存的文件内容是什么.
我可以想到两种方法:
git diff
,并将其应用于工作树中的文件git checkout-index
,指向临时文件并从那里读取内容有没有更简单的方法?
gra*_*ity 55
使用:
前缀访问当前索引中的对象(暂存但尚未提交).
git show :file
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅gitrevisions手册.
要从索引中捕获文件,我不确定预先存在的可编写脚本的方式,但您可以使用ls-files
查询索引:
$ git ls-files -s README
100644 67cfeb2016b24df1cb406c18145efd399f6a1792 0 README
$ git cat-file blob 67cfeb2016b24df1cb406c18145efd399f6a1792
# etc.
Run Code Online (Sandbox Code Playgroud)
您可以将命令放在一起,如下所示:
git cat-file blob $(git ls-files -s README | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)
(虽然我肯定在这里重新发明轮子.)
但是,如果您只想在编辑器中打开原始文件和更改,请使用该difftool
命令.它将索引版本复制到您的临时文件并打开vimdiff
(或任何您想要的),并且非常灵活.
使用 git 获取差异的三种方法
所以要查看工作目录中的文件和索引之间的区别,您只需要:
git diff name_of_file
Run Code Online (Sandbox Code Playgroud)
我在别处更详细地写过这个