Git diff HEAD vs

git diff HEADgit diff --staged什么git diff --staged ? 我尝试了两个,但都给出了相同的输出。


假设这个输出为git status

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   y
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   x
#

正如你所看到的,有一个文件被修改了,但没有被提交进行提交,并且添加了一个新的文件,这个文件已经准备好提交。

git diff --staged将只显示对“staged”区域中文件的更改。

git diff HEAD将显示对被跟踪文件的所有更改。 如果您的所有更改都进行了提交,那么这两个命令都会输出相同的结果。


你将能够更容易地看到两个diff与upcomming(Git 2.3.4+,Q2 2015) git status -v -v之间的区别

请参阅Michael J Gruber mjg提交4055500,它很好地解释了git diff HEADgit diff --staged之间的git diff --staged

commit / status :使用-v -v显示index-worktree diff

给定-v时,长格式的git commitgit status显示HEAD和索引之间的差异。 这允许预览提交

他们还列出了跟踪文件与unstaged更改,但没有差异。

引入' -v -v ', 除了 HEAD索引diff 之外 ,它还显示索引和工作树之间的差异。 这允许查看可能从提交中遗漏的未分离的更改

在' -v -v '的情况下,增加标题行

Changes to be committed:
# and
Changes not staged for commit:

在diff之前插入,与状态部分相同; 后者以50 *“ - ”开头,以使其突出更多。


  • git diff查看阶段和工作目录之间的区别
  • git diff --staged HEAD和Stage之间的视图差异
  • git diff HEAD HEAD和工作目录之间的视图区别
  • 在这里输入图像描述
    img src

    在这里输入图像描述在这里输入图像描述
    img src

    链接地址: http://www.djcxy.com/p/50873.html

    上一篇: Git diff HEAD vs

    下一篇: How to make git status show only staged files