git diff HEAD和之间有什么区别git diff --staged?我都尝试过,但都给出相同的输出。
Answers:
假设此输出为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 只会显示“暂存”区域中文件的更改。
git diff HEAD将显示对跟踪文件的所有更改。如果您已准备好所有更改进行提交,那么这两个命令将输出相同的内容。
git diff变体。如果文件是之前添加和提交的,并且您已经对其进行了修改,那么它将显示为“未暂存”
diff在同一文件的暂存版本和未暂存版本之间进行更改?
git diff --staged如果我正确理解您的意见,@ geremia会这样做。
随着即将到来,您将能够更轻松地看到两个差异之间的差异(Git 2.3.4 +,2015年第二季度) git status -v -v
见犯4055500从迈克尔·格鲁伯Ĵmjg,它很好地解释之间的区别git diff HEAD和git diff --staged:
commit/status:显示index-worktree diff与-v -v
git commit并git status以长格式显示给定时HEAD与索引之间的差异-v。这允许预览要进行的提交。他们还列出了具有未暂存更改但没有差异的跟踪文件。
介绍“
-v -v”示出的索引和worktree之间的差异除了到HEAD索引DIFF。这样可以检查未提交的更改,这些更改可能会在提交中丢失。如果是'
-v -v',则附加标题行
Changes to be committed:
# and
Changes not staged for commit:
插入在差异之前,与状态部分中的相同;后者前面加上50 *“
-”,以使其更加突出。
另一个极端的区别:在新创建的git repo中,git init到目前为止仅运行了此仓库,git diff HEAD将导致致命错误(模糊参数“ HEAD”),而git diff --staged不会产生任何输出。