HEAD、HEAD^和HEAD~1有什么区别?

22
在git中,以下几个有什么区别?
  • HEAD
  • HEAD^
  • HEAD~1
  • HEAD~2

它们与master有什么关联?是否有MASTER^MASTER~1等类似的用法?


1
请参考语法参考,例如:http://jk.gs/gitrevisions.html。 - Jan Krüger
3
你可以在这里找到信息:https://dev59.com/UnE95IYBdhLWcg3wn_j2。 - Robert
可能是Git中HEAD^和HEAD~有什么区别?的重复问题。 - Trilarion
1
不要忘记 HEAD@{1} - Mark Stosberg
1个回答

27

HEAD 是指你当前所在分支上最近的提交,无论它是什么。

HEAD^(或HEAD^1)表示HEAD的第一个父提交。合并提交有多个父提交,因此HEAD^2指的是与创建HEAD的合并相关的第二个直接父提交。

HEAD~1HEAD~是相同的。在这种情况下,它等同于HEAD^。要看到区别,请考虑HEAD~2HEAD的祖父。使用~可向后追溯数代。

如果您恰好在master分支上,则HEAD指的是master。如果您在分支topic/foo上,则在该分支上,它指的是那个分支。

在Git中大小写很重要。MASTER^MASTER~1可能会产生以下形式的错误:

fatal: ambiguous argument 'MASTER~1': unknown revision or path not
in the working tree.

但是,master^master~1是有意义的。

有关您可以引用提交的多种方式的完整详细信息,请参见git rev-parse文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接