2011-02-22 216 views
27

我可以用一只手学习如何将本地分支推送到远程分支。请看下面。非常感谢!推送到git远程分支

在当地的分行被克隆回购然后做

$ 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 

回答

42

尝试

git push origin mybranch 

这推动你的分支名为mybranch到远程名为起源

+0

感谢abizern!似乎一旦你明白:) – julio 2011-02-22 18:46:50

80

由于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 
+11

+1不懒惰:) – Abizern 2011-02-23 11:13:36

6

这是一个老问题,但我用这个网页作为ref早在一天,并有一个答案不同的视角。根据我的经验,最好的方法是调整你的配置设置,使得最终你将不得不输入的所有内容。

你会推到你更新你的代码相同的远程分支:

  • git config --global push.default upstream

而现在,你设置的远程分支上游(如果不是已经) :

  • git branch --set-upstream-to origin/the_master
  • 注:旧版本可以下降BAC k取决于这个不赞成使用的命令形式。
  • git branch --set-upstream local_branch origin/the_master

你有两个分支 - 本地和远程。做一个git pullgit push没有参数应该,现在,将做你想做的。这不会像以上某些命令那样限制您推送与本地名称相同的远程分支。

的最后一件事我平时:修改git pull从这个序列改变:

  • git fetch && git merge [remote_upstream]
  • git fetch && git rebase [remote_upstream]

使用这个命令:git config --global branch.autosetuprebase remote