2013-02-19 108 views
1

我发现git的手册页本节,但它是一种模糊化的交代的:混帐结帐: “@ { - N}” 语法

作为一个特殊的情况下, “@ { - N}”第N个最后分支 的语法会检出分支(而不是分离)。您也可以指定 - 与“@ { - 1}”同义。

这是什么意思?

回答

2

它说,如果你这样做:

git checkout @{-1} 

你看看你是在已签出当前分支之前的分支。另外,它通过名称检查出,所以你实际上是那个分支,而不是仅仅检查在分离的HEAD状态下的提交。同样,您可以使用git checkout @{-2}返回“之前两个分支更改”,等等。

1

Git 2.16(Q1 2018)澄清了这个有点“混淆”的解释。
@{-N}在“git checkout @{-N}”可能指分离的HEAD状态, ,但文档不清楚,它已被修复。

请参阅commit 75ce149(2017年11月27日)作者:Kaartic Sivaraam (sivaraam)
(在commit 7065665Junio C Hamano -- gitster --合并,2017年12月13日)

Doc/checkout:检查出使用@{-N}可导致分离状态

@{-N}是用于第N最后的 “结帐” 语法而不仅仅是第N个最后的“分支”。因此,在某些情况下使用git checkout @{-$N} 会导致“分离的HEAD”状态。
这也可以通过75d6e55的提交消息确保(文档:@{-N}可以参考提交,2014年1月19日,GIT中1.9-RC1),清楚说明如何@{-N}可以用来不仅指一个分支,但也对一个提交。

更正误导性句子,指出@{-N}不会分离HEAD。

git checkout man page现规定:

可以使用"@{-N}"语法参考了N次最后 分支/提交使用“git的结帐”操作检查。
您也可以指定-,它与"@{-1}同义。