推送到git远程分支

时间:2011-02-22 18:31:01

标签: git github

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

在克隆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

3 个答案:

答案 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 pullgit push应该并且现在可以执行您想要的操作。这不会限制您推送到与本地名称相同的远程分支,就像上面的一些命令那样。

我通常做的最后一件事:修改git pull以改变这个序列:

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

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