b/w 'git diff HEAD' 和 'git diff HEAD HEAD~1' 有什么区别?

Uda*_*ran 6 git git-diff

我对 git 很陌生,任何人都可以帮助我。

  • 我实际上被困在什么是“git diff HEAD”。
  • “git diff HEAD”和“git diff HEAD HEAD~1”有什么区别

Mat*_*ene 8

git diff 可以进行两次修订并显示它们之间的差异。

HEAD 是指向当前分支的最后一次提交的引用。

git diff HEAD将向您显示上次提交和尚未提交的更改之间的更改(与git diff(没有修订)相反,后者显示尚未暂存的更改(使用git add,以便之后可以提交))。

HEAD~1是一种特殊语法,允许您选择HEAD. 提交通常只有一个父级(前一次提交),除非它们合并两个分支,在这种情况下,它们有一个父级用于前一次提交,另一个用于合并的分支。

请注意,有一个简写,HEAD因为它被使用得如此频繁。您可以用@相同的行为替换它。git diff @git diff HEAD等相同。


ti7*_*ti7 2

对于HEAD语法

  • HEAD是分支中的最新提交
  • HEAD~N是第 n 个较旧的提交HEAD

git diff HEAD将向您显示当前内容和最近提交之间的差异,
如果您有暂存内容(git add已编辑,但尚未已commit编辑)并且您也对未暂存的差异感兴趣git diff(这将仅向您显示分阶段提交状态及其之上的更改)

git diff HEAD~1..HEAD将向您显示当前分支上最近的提交和上一个提交之间的差异,忽略任何当前的差异,
这对于比较先前提交的范围很有用(以及类似的语法git reset --soft HEAD~N,这将使分支HEAD丢弃~N中间提交,但保留它们就像您使用过一样上演git add

git diff HEAD..HEAD~1向您展示相反的情况HEAD~1..HEAD
通常是一个错误,并且只是造成混乱的根源