我进行了一些更改以提交。如何查看为下一次提交准备的所有文件的差异?有一个方便的内衬吗?

gitstatus只显示暂存文件的名称,但我想查看实际的差异。

gitdiff(1)手册页显示:

git diff[--选项][--][…]此表单用于查看相对于索引所做的更改(下一次提交的暂存区域)。换句话说,这些差异是您可以告诉git进一步添加到索引中的,但您仍然没有。您可以使用gitadd(1)暂存这些更改。


当前回答

注意,gitstatus-v还显示了阶段性的更改!(这意味着您需要进行阶段性的--git-add--一些更改。没有阶段性的更改,没有与git-status-v的差异。自2006年2月Git 1.2.0以来,它就做到了这一点)

在其长格式(默认)中,gitstatus有一个未记录的“verbose”选项,它实际上显示了HEAD和索引之间的差异。

它将变得更加完整:请参阅“在gitdiff中显示阶段树和工作树?”(git2.3.4+,2015年第二季度):

git status -v -v

其他回答

对于临时区域与存储库(上次提交)的比较,请使用

$ git diff --staged

该命令将暂存的($git add fileName)更改与上次提交进行比较。如果你想看到你已经准备好了什么,然后再提交,你可以使用git diff--staged。此命令将暂存的更改与上次提交进行比较。

用于工作与暂存比较

$ git diff 

该命令将工作目录中的内容与暂存区域中的内容进行比较。需要注意的是,gitdiff本身不会显示自上次提交以来所做的所有更改 — 只有未标记的更改。如果您已经暂存了所有更改($git-add-fileName),git-diff将不会给您任何输出。

此外,如果您暂存一个文件($git-add-fileName),然后对其进行编辑,则可以使用gitdiff查看暂存文件中的更改和未暂存的更改。

默认情况下,gitdiff用于显示未添加到git更新文件列表中的更改。但是,如果您想显示添加或分段的更改,则需要提供额外的选项,让git知道您对分段或添加的文件diff感兴趣。

$ git diff          # Default Use
$ git diff --cached # Can be used to show difference after adding the files 
$ git diff --staged # Same as 'git diff --cached' mostly used with latest version of git 

实例

$ git diff 
diff --git a/x/y/z.js  b/x/y/z.js index 98fc22b..0359d84 100644
--- a/x/y/z.js 
+++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {

-        if (a)
+        if (typeof a !== 'undefined')
             res = 1;
         else
             res = 2;

$ git add x/y/z.js
$ git diff
$

一旦你添加了文件,你就不能使用默认的“gitdiff”。你必须这样做:-

$ git diff --cached
diff --git a/x/y/z.js  b/x/y/z.js index 98fc22b..0359d84 100644
    --- a/x/y/z.js 
    +++ b/x/y/z.js @@ -43,7 +43,7 @@ var a = function (tooltip) {

    -        if (a)
    +        if (typeof a !== 'undefined')
                 res = 1;
             else
                 res = 2;

应该是:

git diff --cached

--缓存的方法显示缓存/索引中相对于当前HEAD的变化(即阶段性变化)--staged是--cached的同义词。

--staged和--cached并不指向HEAD,只是和HEAD不同。如果您使用git-add--patch(或git-add-p)选择要提交的内容,--staged将返回所提交的内容。

要查看特定阶段文件的差异,可以使用

git diff --staged -- <path>...

例如

git diff --staged -- app/models/user.rb

简单的图形使这一点更加清晰:

差异比较

显示工作目录和索引之间的更改。这将显示已更改但未准备提交的内容。

git diff—缓存

显示索引和HEAD之间的更改(这是该分支上的最后一次提交)。这将显示已添加到索引中并为提交而暂存的内容。

git diff头

显示工作目录和HEAD之间的所有更改(包括索引中的更改)。这将显示自上次提交以来的所有更改,无论它们是否为提交而暂存。

也:

365Git上有更多细节。