“为什么?”;git push origin“;不工作?
我们可以像下面这样推动树枝的头部“为什么?”;git push origin“;不工作?,git,alias,git-push,Git,Alias,Git Push,我们可以像下面这样推动树枝的头部 $ git push origin HEAD 而且,我们可以使用@作为头的别名 $ git show @ 那么为什么下面的命令会给我一个错误 $ git push origin @ fatal: remote part of refspec is not a valid name in @ 尽管可以使用@指定头部,但首先需要将@解析为ref。git push的语法采用refspec,在该上下文中,@具有两种不同的含义,其中只有一种是ref git push
$ git push origin HEAD
而且,我们可以使用@
作为头的别名
$ git show @
那么为什么下面的命令会给我一个错误
$ git push origin @
fatal: remote part of refspec is not a valid name in @
尽管可以使用@
指定头部
,但首先需要将@
解析为ref。git push的语法采用refspec,在该上下文中,@
具有两种不同的含义,其中只有一种是ref
git push
中refspec的语法是[+][:]
<代码>+
是可选的<代码>:是可选的,如果它可以从
解析
git-push-origin-HEAD
起作用,因为HEAD
被视为非常特殊的情况:HEAD
通常是对特定分支的符号引用,git-push
解析符号引用,并基于指向的分支名称选择
例如,您还可以有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
必须始终指定与HEAD
完全相同的提交
git-push-origin@
失败,因为它转换为git-push-origin@
,并且远程引用名@
无效,即使@
必须始终指定与头
完全相同的提交
git-push-origin@:HEAD
几乎可以工作,如果您有一个名为HEAD
的远程分支。这不是refspec只是HEAD
的特殊情况,因此这不会基于任何符号ref解析HEAD
git-push-origin@:master
确实有效。我猜是因为@映射到提交而不是头,所以它无法确定远程名称git-push-origin@:master
应该可以工作。@eckes但是,@
'应该被HEAD替换:你尝试了什么git版本,@sangdol。1.8.5中记录了一些“修复”RelNotes@VonC啊,好吧,从来没用过(我认为,git-push-origin-HEAD
等同于带有push的git-push-origin
。default=simple,因此不需要@case。@我用1.8.5.4试过的eckes。它在2.0.4上仍然不起作用。git-push-origin
也不起作用。default=simple。谢谢你的解释。如果git-translates@
到HEAD
在push
之前将@
转换为@
?它不可行吗?@Sangdol当然,它是可行的。如果所有操作都失败,它总是可以作为特例添加。这将与其他命令不一致,例如git symbolical ref@
,在这些命令中它也不起作用当然,让它为git push工作并没有什么好处:大多数人根本不会键入任何refspec。所以我怀疑,如果考虑到它,它就没有必要了。