我进行了一些更改以提交。如何查看为下一次提交准备的所有文件的差异?有一个方便的内衬吗?
gitstatus只显示暂存文件的名称,但我想查看实际的差异。
gitdiff(1)手册页显示:
git diff[--选项][--][…]此表单用于查看相对于索引所做的更改(下一次提交的暂存区域)。换句话说,这些差异是您可以告诉git进一步添加到索引中的,但您仍然没有。您可以使用gitadd(1)暂存这些更改。
我进行了一些更改以提交。如何查看为下一次提交准备的所有文件的差异?有一个方便的内衬吗?
gitstatus只显示暂存文件的名称,但我想查看实际的差异。
gitdiff(1)手册页显示:
git diff[--选项][--][…]此表单用于查看相对于索引所做的更改(下一次提交的暂存区域)。换句话说,这些差异是您可以告诉git进一步添加到索引中的,但您仍然没有。您可以使用gitadd(1)暂存这些更改。
当前回答
简单的图形使这一点更加清晰:
差异比较
显示工作目录和索引之间的更改。这将显示已更改但未准备提交的内容。
git diff—缓存
显示索引和HEAD之间的更改(这是该分支上的最后一次提交)。这将显示已添加到索引中并为提交而暂存的内容。
git diff头
显示工作目录和HEAD之间的所有更改(包括索引中的更改)。这将显示自上次提交以来的所有更改,无论它们是否为提交而暂存。
也:
365Git上有更多细节。
其他回答
简单的图形使这一点更加清晰:
差异比较
显示工作目录和索引之间的更改。这将显示已更改但未准备提交的内容。
git diff—缓存
显示索引和HEAD之间的更改(这是该分支上的最后一次提交)。这将显示已添加到索引中并为提交而暂存的内容。
git diff头
显示工作目录和HEAD之间的所有更改(包括索引中的更改)。这将显示自上次提交以来的所有更改,无论它们是否为提交而暂存。
也:
365Git上有更多细节。
如果您对视觉并排视图感兴趣,漫反射视觉差异工具可以做到这一点。如果某些但不是所有更改都被分段,它甚至会显示三个窗格。在冲突的情况下,甚至会有四个窗格。
使用调用它
diffuse -m
在Git工作副本中。
如果你问我,这是我十年来见过的最好的视觉差异。此外,它并不是特定于Git的:它可以与过多的其他VCS进行互操作,包括SVN、Mercurial、Bazaar等。。。
另请参阅:在gitdiff中显示暂存树和工作树?
对于临时区域与存储库(上次提交)的比较,请使用
$ git diff --staged
该命令将暂存的($git add fileName)更改与上次提交进行比较。如果你想看到你已经准备好了什么,然后再提交,你可以使用git diff--staged。此命令将暂存的更改与上次提交进行比较。
用于工作与暂存比较
$ git diff
该命令将工作目录中的内容与暂存区域中的内容进行比较。需要注意的是,gitdiff本身不会显示自上次提交以来所做的所有更改 — 只有未标记的更改。如果您已经暂存了所有更改($git-add-fileName),git-diff将不会给您任何输出。
此外,如果您暂存一个文件($git-add-fileName),然后对其进行编辑,则可以使用gitdiff查看暂存文件中的更改和未暂存的更改。
如果您有多个文件进行了阶段性更改,那么使用git add-i,然后选择6:diff,最后选择您感兴趣的文件可能更实用。
如果您的意图是将目标推送到远程回购分支,并且提交更改日志的第一次传递不完整,则可以在这样推送之前更正提交语句。
本地
…进行一些更改。。。
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