在git中,以下是什么区别?
HEAD
HEAD^
HEAD~1
HEAD~2
它们与master
有什么关系?那么有MASTER^
,MASTER~1
??
答案 0 :(得分:9)
HEAD
是当前分支上最新提交的同义词,无论它是什么。
HEAD^
(或HEAD^1
)表示HEAD
的第一个父级。合并提交具有多个父项,因此HEAD^2
指的是HEAD
的第二个立即父项,其中包含创建HEAD
的合并。
HEAD~1
与HEAD~
相同。在这种情况下,它与HEAD^
同义。要查看差异,请考虑HEAD~2
是HEAD
的祖父母。使用~
可以追溯到几代人。
如果您恰好位于master
分支上,则HEAD
指的是主人。如果你在分支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
documentation。