我可以用手学习如何将本地分支推送到远程分支。请看下面。非常感谢!
在克隆repo然后执行
之后创建了本地分支$ git checkout -b mybranch remotes/origin/mybranch
$ git branch -a
master
* mybranch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mybranch
但是当试图推动变革时:
$ git push mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git push remotes/origin/mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git push origin/mybranch mybranch
fatal: 'mybranch' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
答案 0 :(得分:87)
正如Abizern所说,这有效:
git push origin mybranch
但是,为了进一步解释, mybranch 部分是 refspec 。这指定了应该使用给定的本地提交更新的远程引用。
因此,上面的命令相当于:
git push origin mybranch:mybranch
甚至:
git push origin mybranch:refs/heads/mybranch
事实上,既然你在当地的mybranch上,你可以做到:
git push origin HEAD:mybranch
这很好理解,因为我经常发现自己做的事情如下:
git push origin HEAD^:mybranch
您希望将除最顶层补丁之外的所有补丁推送到远程分支。
最后,如果你想删除远程mybranch,你可以:
git push origin :mybranch
答案 1 :(得分:47)
尝试
git push origin mybranch
这会将名为 mybranch 的分支推送到名为 origin 的远程
答案 2 :(得分:7)
这是一个老问题,但我在当天使用此页面作为参考,并以不同的视角回答。根据我的经验,最好的方法是调整配置设置,以便最后输入git push
。
您将推送到更新代码的同一个远程分支:
git config --global push.default upstream
现在,您将远程分支设置为上游(如果尚未):
git branch --set-upstream-to origin/the_master
git branch --set-upstream local_branch origin/the_master
您有两个分支 - 本地分支和远程分支。在没有args的情况下执行git pull
或git push
应该并且现在可以执行您想要的操作。这不会限制您推送到与本地名称相同的远程分支,就像上面的一些命令那样。
我通常做的最后一件事:修改git pull
以改变这个序列:
git fetch && git merge [remote_upstream]
至git fetch && git rebase [remote_upstream]
使用此命令:git config --global branch.autosetuprebase remote