如何显示分阶段删除文件的差异?

时间:2014-01-27 08:36:48

标签: git

状态如下:

On branch howard
Your branch is up-to-date with 'origin/howard'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    thing.scala
    (and other changed files)

如果我git diff --cached,它会显示thing.scala的内容以及其他差异。

但我有兴趣只看到已删除文件的内容。如何在git中这样做?

以下尝试不起作用:

git show HEAD~1 thing.scala
git diff --cached thing.scala

1 个答案:

答案 0 :(得分:7)

git show HEAD~1 thing.scala

你所拥有的几乎是正确的,它只有两个小问题。

首先,由于您尚未提交,HEAD指的是仍然具有thing.scala文件的最后一个版本。 HEAD~1是之前的版本。

其次,显示特定提交文件的语法是git show <commit>:<file>

git show HEAD:thing.scala

应该有用。

文档在gitrevisions中提到了这种语法:

  

&lt; rev&gt;:&lt; path&gt;,例如HEAD:README,:README,master:./ README

     

后缀后跟一个路径,命名由冒号前部分命名的树形对象中给定路径的blob或树。 :path (在冒号前面有一个空部分)是下面描述的语法的特例:在给定路径的索引中记录的内容。以 ./ ../ 开头的路径是相对于当前工作目录的。给定路径将转换为相对于工作树的根目录。这对于从与工作树具有相同树结构的提交或树中寻址blob或树非常有用。

对于git diff --cached:以下参数仅在文件名存在时才被解释为文件名。由于您删除了该文件,因此不适用。您可以使用--

强制将参数解释为文件名
git diff --cached -- thing.scala