协慌网

登录 贡献 社区

如何显示已上演的更改?

我上演了一些改变; 如何查看为下次提交而暂存的所有文件的差异?我知道git 状态 ,但我想看到实际的差异 - 而不仅仅是分阶段文件的名称。

我看到git-diff(1)手册页说

git diff [--options] [-] [...]

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

不幸的是,我无法理解这一点。必须有一些方便的单行,我可以创建一个别名,对吗?

答案

它应该只是:

git diff --cached

--cached表示针对当前HEAD显示缓存 / 索引(即分阶段更改)中的更改。 --staged--cached的同义词。

--staged--cached不指向HEAD ,只是与HEAD有所区别。如果您使用git add --patch (或git add -p )来挑选提交内容,则--staged将返回已暂存的内容。

一个简单的图形使这更清楚:

简单的Git差异

git diff

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

git diff --cached

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

git diff HEAD

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

另外

有关365Git 的更多细节

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

带有分阶段和非分阶段编辑的漫反射屏幕截图

用它调用它

diffuse -m

在你的 Git 工作副本中。

如果你问我,十年来我见过的最好的视觉效果。此外,它并不特定于 Git:它与许多其他 VCS 互操作,包括 SVN,Mercurial,Bazaar,......

另请参阅: 在 git diff 中显示分段和工作树?