我如何显示已经上演的变化?
我提出了一些改变, 我怎么能看到下一个提交的所有文件的差异? 我知道git的状态 ,但我想看看实际的差异 – 不仅仅是上演的文件的名字。
我看到了git-diff(1)手册页说
git diff [–options] [ – ] […]
这种forms是查看你所做的相对于索引的变化(下一次提交的登台区域)。 换句话说,差异是你可以告诉git进一步添加到索引,但你还没有。 你可以通过使用git-add(1)来完成这些更改。
不幸的是,我不太明白这一点。 必须有一些方便的一行,我可以创build一个别名,对吗?
它应该是:
 git diff --cached 
  --cachedcaching意味着显示caching/索引(即分阶段更改)对当前HEAD更改。  --staged是--cached的同义词。 
编辑
 为了澄清上述说明,– --staged和--cached并不指向HEAD ,只是与HEAD有所不同。 如果你select使用git add --patch (或git add -p )来提交什么,– --staged将返回上演的内容。 
一个简单的graphics使这个更清晰:

git diff
显示工作目录和索引之间的更改。 这显示了什么已经改变,但没有提交一个提交。
git diff –cached
显示索引和HEAD(这是该分支上的最后一个提交)之间的更改。 这显示了已经添加到索引的内容,并提交了一个提交。
git diff HEAD
显示工作目录和HEAD(其中包括索引中的更改)之间的所有更改。 这显示了自上次提交以来所做的所有更改,无论它们是否已提交或未提交。
另外 :
365Git有更多的细节。
如果你对可视化的并行视图感兴趣, diffuse visual diff工具可以做到这一点。 它甚至会显示三个窗格,如果一些但不是所有的变化都上演。 在冲突的情况下,甚至会有四个窗格。

用它来调用它
 diffuse -m 
在你的Git工作副本中。
如果你问我,我已经看了十年的最好的视觉差异。 另外,它不是特定的Git:它与其他VCS,包括SVN,Mercurial,Bazaar等多得多的互操作…
另请参见: 在git diff中显示staged和working tree?
 请注意, git status -v 也显示阶段性的变化!  (这意味着你需要上演 – git add – 一些变化,没有阶段性变化,没有git status -v diff。 
 它从2006年2月份的Git 1.2.0开始 ) 
 在其长forms(默认), git status有一个未公开的“详细”选项,实际上显示HEAD和索引之间的差异。 
它将变得更加完整:请参阅“ 在git diff中同时显示staged和working tree? ”(git 2.3.4+,Q2 2015):
 git status -v -v 
你可以使用这个命令。
 git diff --cached --name-only 
  git diff的--cached选项意味着获取staged文件,而--name-only选项意味着只获取文件的名字。 
从1.7版本开始,它应该是:
 git diff --staged 
 如果你有多个分阶段修改的文件,可以使用git add -i ,然后select6: diff ,最后select你感兴趣的文件。 
如果您的意图是推送一个远程repo分支,并且您在提交更改日志中的第一个传递不完整,则可以在推送之前更正提交语句。
本地
…做一些改变…
 git diff # look at unstaged changes git commit -am"partial description of changes" 
…回想起未提及的更多变化…
git diff origin / master#查看暂存但未推送的更改
修改分阶段提交语句…
 git commit --amend -m"i missed mentioning these changes ...." git push 
对于Staging Area vs Repository比较使用
 $git diff --staged 
对于工作与存储库比较使用
 $ git diff 
 但如果一个文件被改变并添加到暂存区域( $ git add fileName ),我们尝试看看( $ git diff )的$ git diff 。 它将不会返回任何区别,因为文件处于暂存区域,不会与存储库进行比较。 
使用可视差分工具
默认答案(在命令行)
 这里的最佳答案正确地显示了如何查看Index的caching/分阶段更改: 
 $ git diff --cached 
 或$ git diff --staged这是一个别名。 
启动Visual Diff工具
 默认的答案会在git bash(即在命令行或在控制台)吐出diff变化。 对于那些喜欢直接显示文件差异的人来说,git中有一个脚本可以为每个查看的文件启动一个可视化的diff工具,而不是在名为difftool的命令行上显示它们: 
 $ git difftool --staged 
 这将和git diff --staged ,除了diff工具运行的时候(即每次文件被diff处理时),它都会启动默认的可视化diff工具(在我的环境中,这是kdiff3 ) 。 
工具启动后,git diff脚本将暂停,直到您的可视化diff工具closures。 因此,您需要closures每个文件才能看到下一个文件。
 你总是可以在git命令中使用difftool代替diff 
 对于所有的视觉差异需求, git difftool可以代替任何git diff命令,包括所有的选项。 
 例如,要启动可视化比较工具而不询问是否为每个文件执行此操作,请添加-y选项(我认为通常您会需要这个!!): 
 $ git difftool -y --staged 
在这种情况下,它将在视觉差异工具中逐个提取每个文件,一次一个,在工具closures后调出下一个文件。
 或者查看Index特定文件的差异: 
 $ git difftool -y --staged <<relative path/filename>> 
有关所有选项,请参见手册页:
 $ git difftool --help 
设置Visual Git工具
 要使用非默认的可视化git工具,请使用-t <tool>选项: 
 $ git difftool -t <tool> <<other args>> 
或者,请参阅difftool手册页,了解如何configurationgit以使用不同的默认视觉差异工具。
  git gui和git-cola是可以让你查看和操作索引的graphics工具。 两者都包括简单的视觉差异的分阶段文件,并且git-cola也可以启动更复杂的并排视觉比较工具。 
看到我的密切相关的答案在如何从git索引中删除文件? ,也是这个官方目录的Git – GUI客户端 。
 想一下gitk工具也可以,用git提供,非常有用,可以看到变化