在git中,以下几个有什么区别?
HEAD
HEAD^
HEAD~1
HEAD~2
它们与master
有什么关联?是否有MASTER^
、MASTER~1
等类似的用法?
HEAD
HEAD^
HEAD~1
HEAD~2
它们与master
有什么关联?是否有MASTER^
、MASTER~1
等类似的用法?
HEAD
是指你当前所在分支上最近的提交,无论它是什么。
HEAD^
(或HEAD^1
)表示HEAD
的第一个父提交。合并提交有多个父提交,因此HEAD^2
指的是与创建HEAD
的合并相关的第二个直接父提交。
HEAD~1
和HEAD~
是相同的。在这种情况下,它等同于HEAD^
。要看到区别,请考虑HEAD~2
是HEAD
的祖父。使用~
可向后追溯数代。
如果您恰好在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
文档。
HEAD@{1}
。 - Mark Stosberg