1

我在 git 手册页中找到了这一部分,但这是一种混淆的解释:

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

这是什么意思?

4

2 回答 2

2

它是说,如果你这样做:

git checkout @{-1}

您将在签出当前分支之前签出您所在的分支。此外,它通过 name将其签出,因此您实际上将该分支上,而不仅仅是在分离的 HEAD 状态下签出该提交。类似地,您可以使用git checkout @{-2}返回“之前的两个分支更改”,等等。

于 2013-02-19T19:12:19.307 回答
2

Git 2.16(2018 年第一季度)澄清了这种有点“混淆”的解释。
@{-N}in " git checkout @{-N}" 可能指的是分离的 HEAD 状态,但文档对此并不清楚,已修复。

请参阅Kaartic Sivaraam ( ) 的提交 75ce149(2017 年 11 月 27 日(由Junio C Hamano 合并 -- --提交 7065665中,2017 年 12 月 13 日)sivaraam
gitster

Doc/checkout: 签出使用@{-N}会导致分离状态

@{-N}是第N 个最后一个“结帐”的语法,而不仅仅是第 N 个最后一个“分支”。因此,在某些情况下,使用git checkout @{-$N} DOES 会导致“分离 HEAD”状态。
这也可以通过75d6e55的提交消息(文档:@{-N}可以参考提交,2014-01-19,Git 1.9-rc1)来确保,该消息明确指定如何@{-N}不仅可以引用分支,还可以引用提交.

更正说明@{-N}不分离 HEAD 的误导性句子。

git checkout手册页现在显示:

您可以使用"@{-N}"语法来引用使用“git checkout”操作签出的第 N 个最后一个分支/提交。
您还可以指定-哪个是 的同义词"@{-1}

于 2017-12-15T20:25:12.060 回答