如何详细显示 Git 中未提交的更改和一些 Git 差异
Posted
技术标签:
【中文标题】如何详细显示 Git 中未提交的更改和一些 Git 差异【英文标题】:How to show uncommitted changes in Git and some Git diffs in detail 【发布时间】:2016-06-28 23:03:33 【问题描述】:如何在 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>...]'
【问题讨论】:
【参考方案1】:如何在 Git 中显示未提交的更改
您要查找的命令是git diff
。
git diff
- 显示提交、提交和工作树等之间的更改
这里有一些你可以使用的选项
git diff
(无参数)
打印出您的工作目录和索引之间的差异。
git diff --cached
:
打印出 index 和 HEAD(当前提交)之间的差异。
git diff HEAD
:
打印出您的工作目录和 HEAD 之间的差异。
git diff --name-only
仅显示更改文件的名称。
git diff --name-status
仅显示已更改文件的名称和状态。
git diff --color-words
逐字比较,而不是逐行。
这是git diff --color-words
的输出示例:
【讨论】:
当你看到最后的冒号提示时,这意味着 git 已经显示了第一页 - 按 enter 逐步完成其他更改(就像你可以使用 cat file | more) --staged 和 --cached 是同义词 为了完整起见,我将包括 git diff dev..origin/dev 重要的是要注意,您需要输入HEAD
全部大写。我尝试使用Head
,但失败了。【参考方案2】:
您已经暂存了更改(可能是通过运行git add
),因此为了获得它们的差异,您需要运行:
git diff --cached
(普通的git diff
只会显示未分级的更改。)
例如:
【讨论】:
【参考方案3】:对我来说,唯一有效的是
git diff HEAD
包括暂存文件,git diff --cached
只显示暂存文件。
【讨论】:
【参考方案4】:我遇到了git status
显示变化的情况,但是git diff
什么也没打印,尽管有几行发生了变化。然而:
$ git diff data.txt > myfile
$ cat myfile
<prints diff>
Raspbian 上的 Git 2.20.1。 git checkout
、git pull
等其他命令可以毫无问题地打印到标准输出。
【讨论】:
以上是关于如何详细显示 Git 中未提交的更改和一些 Git 差异的主要内容,如果未能解决你的问题,请参考以下文章