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

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

gitdiff(1)手册页显示:

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


当前回答

如果您对视觉并排视图感兴趣,漫反射视觉差异工具可以做到这一点。如果某些但不是所有更改都被分段,它甚至会显示三个窗格。在冲突的情况下,甚至会有四个窗格。

使用调用它

diffuse -m

在Git工作副本中。

如果你问我,这是我十年来见过的最好的视觉差异。此外,它并不是特定于Git的:它可以与过多的其他VCS进行互操作,包括SVN、Mercurial、Bazaar等。。。

另请参阅:在gitdiff中显示暂存树和工作树?

其他回答

gitgui和gitcola是图形实用程序,可用于查看和操作索引。两者都包括用于暂存文件的简单视觉差异,git-cola还可以推出更复杂的并排视觉差异工具。

在如何从git中的索引中删除文件?,以及Git-GUI客户端的官方目录。

如果您的意图是将目标推送到远程回购分支,并且提交更改日志的第一次传递不完整,则可以在这样推送之前更正提交语句。

本地

…进行一些更改。。。

git diff # look at unstaged changes

git commit -am"partial description of changes"

…回忆更多提交中未提及的更改。。。

gitdifforigin/master#查看暂存但未推送的更改

…修改分段提交语句。。。

git commit --amend -m"i missed mentioning these changes ...."

git push

应该是:

git diff --cached

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

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

从1.7版及更高版本开始,应为:

git diff --staged

如果您有多个文件进行了阶段性更改,那么使用git add-i,然后选择6:diff,最后选择您感兴趣的文件可能更实用。