如何在Git中显示未提交的更改?

我STFW'ed,这些命令不工作:

teyan@TEYAN-THINK MINGW64 /d/nano/repos/PSTools/psservice (teyan/psservice)
$ git status
On branch teyan/psservice
Your branch is up-to-date with 'origin/teyan/psservice'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   psservice.c
        modified:   psservice.vcxproj.filters


teyan@TEYAN-THINK MINGW64 /d/nano/repos/PSTools/psservice (teyan/psservice)
$ git diff

teyan@TEYAN-THINK MINGW64 /d/nano/repos/PSTools/psservice (teyan/psservice)
$ git diff master
fatal: ambiguous argument 'master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

你已经执行了这些更改(大概是通过运行git add),所以为了得到它们的差异,你需要运行:

git diff --cached

(简单的git diff只会显示未分阶段的变化。)

例如:


如何在Git中显示未提交的更改

您要查找的命令是git diff。

git diff -显示提交、提交和工作树等之间的变化


下面是它提供的一些您可以使用的选项

Git diff(无参数) 打印出工作目录和索引之间的差异。

Git diff——cached: 打印出索引和HEAD(当前提交)之间的差异。

git差异头: 打印出您的工作目录和HEAD之间的差异。

Git diff -name-only 只显示已更改文件的名称。

Git diff——name-status 只显示已更改文件的名称和状态。

Git diff——颜色单词 逐字逐句的差异,而不是逐行。

下面是git diff——colour -words的输出示例:



对我来说,唯一有效的方法就是

git diff HEAD

包括暂存文件,git diff——cached只显示暂存文件。


我有一个情况的git状态显示变化,但git diff打印什么,虽然有几行变化。然而:

$ git diff data.txt > myfile
$ cat myfile
<prints diff>

Git 2.20.1在raspbian上。其他命令如git checkout、git pull打印到标准输出没有问题。


当然不是显示未提交文件的正确方法,但它是有效的: Git开关<current-branch>

输出: