git push origin不会创建远程分支

时间:2016-12-10 00:29:27

标签: git github

我将一个存储库克隆到我的本地,做了一个分支,让分支跟踪我的本地主人。更改后,我将更改提交到我的分支。并尝试了以下内容:

  

git push origin my-local-branch

但是在查看我的远程仓库时,那里没有my-local-branch,我的更改已经合并到(远程)主服务器中。不知道为什么会发生这种情况。

我总是在工作中这样做。我想知道工作中是否有一些我自己没有的默认设置。

更新:这又发生了。仅供参考,这是我的命令链:

git checkout -b my-local
git branch --set-upstream-to master
...
git add -A
git commit
git push origin my-local

同样,代码直接合并到远程主服务器,并且没有在远程创建分支。然后,我尝试了同样的事情,但这次没有 git branch --set-upstream-to master 。这实际上有效!为什么会这样呢?它听起来并不像预期的行为。

4 个答案:

答案 0 :(得分:1)

您可以尝试传递-u选项:

git push -u origin <branch>

答案 1 :(得分:0)

git branch -vv
  

-vv   --verbose在列表模式下,显示每个头的sha1和提交主题行,以及与上游分支(如果有)的关系。如果   给定两次,打印上游分支的名称(另见   git remote show)

也许您的本地分支与远程主分支有关。

答案 2 :(得分:0)

  • 当您执行set-upstream-to master时,您的local-branch开始跟踪remote branch master。因此,在pushing your local changes之后,它正在更新remote master branch而不是origin/your-local-branch
  

- 设置上游到= <upstream>
  设置跟踪信息,因此被视为上游分支。如果未指定,则默认为当前分支   See More

  • 当你没有设置set-upstream-to master时,defaults to current local branch。现在,当您推动更改时,它正在创建origin/your-local-branch并根据您的更改进行更新。

如果您想查看已设置的跟踪分支,可以使用-vv选项。

$ git branch -vv 

推送到非默认分支:

  • 设置set-upstream-to master(现在默认跟踪分支是远程主分支)后,如果要推送other remote branch,则需要使用<source-branch>:<dest-branch>进行推送。

    $ git push origin <local-branch>:<remote-branch>
    
    # if remote branch doesn't exit, do force push
    $ git push -f origin <local-branch>:<remote-branch>   # create a new branch and push to it
    

    See More

答案 3 :(得分:0)

git branch --set-upstream-to master

这告诉git你的my-local-branch的上游是你的本地master分支 - 我不明白你为什么要这样做,因为你的目标似乎是您的遥控器中还有一个名为my-local-branch的分支。

在我看来,最简单的方法就是不要使用--set-upstream-to,但是当你第一次按下时,就这样做:

git push -u origin my-local-branch

这也会在遥控器上创建一个名为my-local-branch的分支,并将其设置为您的默认上游。然后,您可以在后续推送时不做任何参数git push