37 git
at-sign @通常在git中用于以不同方式指定修订.例如,
<ref>@{<date>}指定其状态的引用<date>.
示例:git diff master@{yesterday} master.
<ref>@{<n>}特定于第n 个先前状态的参考.
示例:git diff master@{1} master.
@{-<n>}指定当前之前检出的第n 个分支.
示例:git checkout @{-5}.
<ref>@{upstream} 指定引用的上游分支.
示例:git diff master@{upstream} master.
但是,@它也在git命令中以其他方式使用,例如
git rebase -i @~4
git log @^^..@
Run Code Online (Sandbox Code Playgroud)
@在这些例子中,at-sign 意味着什么?
小智 43
从Git版本1.8.5开始,at-sign @没有前导分支/引用名称和ordinal {n}后缀,如HEAD@{1}和master@{1},只是特殊Git引用的同义词/别名/快捷方式HEAD:
现在可以说"@",而不是输入四个大写字母"HEAD",例如"git log @".
所以对于这些命令
git rebase -i @~4
git log @^^..@
Run Code Online (Sandbox Code Playgroud)
你可以简单地替代第一的发生@与HEAD(或head如果使用Windows或OS X)
git rebase -i HEAD~4
git log HEAD^^..HEAD
Run Code Online (Sandbox Code Playgroud)
那HEAD意味着什么?正如用于指定Git修订版的官方Linux Kernel Git文档所解释的那样,HEAD是一个特殊的快捷方式引用,用于您当前已作为工作副本签出的提交(或者在Git术语中,您的"工作树"):
HEAD命名您基于工作树中的更改的提交.
您还可以阅读有关特殊参考HEAD含义的其他Stack Overflow问题:
VonC还发现为什么有趣的信息@被选择作为一个快捷方式head在这个堆栈溢出的答案(在底部的最后一节).