我们可以像下面这样推动分支的头
$ git push origin HEAD
并且,我们可以使用@
的别名HEAD
。
$ git show @
那为什么下面的命令给我一个错误?
$ git push origin @
fatal: remote part of refspec is not a valid name in @
尽管@
可以用来指定HEAD
,但首先需要@
将其解析为ref。的语法git push
采用refspec,在这种情况下,@
具有两种不同的含义,其中只有一种是ref。
对于在的Refspec的语法git push
是[+]<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
,并且远程refnameHEAD~0
无效,即使HEAD~0
必须始终指定与相同的提交HEAD
。
git push origin @
失败,因为它将转换为git push origin @:@
,并且远程refname@
无效,即使@
必须始终指定与相同的提交HEAD
。
git push origin @:HEAD
如果您有一个名为的远程分支,则几乎可以使用HEAD
。这不是refspec是simple的特殊情况HEAD
,因此这不会HEAD
基于任何符号ref来解决。
git push origin @:master
确实有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句