我们可以像下面那样推动分支的负责人
$ git push origin HEAD
并且,我们可以将@
用于HEAD
的别名。
$ git show @
那么为什么下面的命令会给我一个错误?
$ git push origin @
fatal: remote part of refspec is not a valid name in @
答案 0 :(得分:8)
虽然可以使用@
来指定HEAD
,但您首先需要将@
解析为ref。 git push
的语法采用refspec,在该上下文中,@
被赋予两种不同的含义,其中只有一种是参考。
git push
中refspec的语法是[+]<src>[:<dst>]
。 +
是可选的。 :<dst>
是可选的,如果可以从<src>
解析。
git push origin HEAD
有效,因为HEAD
被视为一种非常特殊的情况:HEAD
通常是特定分支的符号引用,git push
解析符号引用并选择<dst>
基于指向的分支名称。
您还可以使用git symbolic-ref MYMASTER refs/heads/master
,然后git push origin MYMASTER
。
git push origin HEAD~0
失败,因为它转换为git push origin HEAD~0:HEAD~0
,远程引用名HEAD~0
无效,即使HEAD~0
必须始终指定与{完全相同的提交{1}}。
HEAD
失败,因为它转换为git push origin @
,远程引用名git push origin @:@
无效,即使@
必须始终指定与{完全相同的提交{1}}。
@
的远程分支, HEAD
几乎可以正常工作。这不是refspec只是git push origin @:HEAD
的特殊情况,因此根据任何符号引用都无法解析HEAD
。
HEAD
确实有用。