Ond*_*žka 9 git branch push remote-branch
我做了:
git co upstream/master # To no branch.
<then did a trivial edit on some file...>
git commit -a -m "Trivial edit"
git push origin NewBranch
Run Code Online (Sandbox Code Playgroud)
但得到了这个:
$ git push origin ignore-netbeans-config
error: src refspec ignore-netbeans-config does not match any.
Run Code Online (Sandbox Code Playgroud)
我可以在没有创建本地分支的情况下推送到新分支吗?
max*_*max 11
尝试
git push origin HEAD:refs/heads/ignore-netbeans-config
Run Code Online (Sandbox Code Playgroud)
art*_*non 10
让我们首先澄清一些小细节:
refs/heads命名空间下的"ref" .只是ls .git/refs/heads和cat那里的文件,看看我的意思.refs/tags命名空间下是"ref" .只是.git/refs/tags为了亲自看看.HEAD只是另一个"参考",但它的特殊之处在于它可以是"象征性的".只是cat .git/HEAD看看它说的是什么.甲push操作上的"REF"操作,并且默认的"映射"保留的命名空间.这意味着当我推动分支时,它将显示为遥控器上的分支; 当我按下标签时,它会在遥控器上显示为标签.请考虑以下方案:
我想推送标签moo并使其显示为远程服务器上的分支(是的,我实际上是将标签"转换"为分支).我就是这样做的:
git push origin moo:refs/heads/moo
Git需要一种方法来区分快进和非ff推送,这样人们就不会错误地覆盖别人的工作.比方说,我要推的树枝master,next和pu,其中只有pu非FF.我就是这样做的(请注意,在使用时必须提供显式映射+):
git push origin master next +pu:pu
现在,让我们回答你的问题.您希望推送HEAD它,使其refs/heads作为名为"ignore-netbeans-config"的分支出现在远程命名空间中.如果此分支之前不存在,或者您正在覆盖其中的一些提交(即非ff推送),请使用+.否则,不要.最终结果:
git push origin +HEAD:refs/heads/ignore-netbeans-config
TL; DR版本: git push origin +HEAD:refs/heads/ignore-netbeans-config