我将一个存储库克隆到我的本地,做了一个分支,让分支跟踪我的本地主人。更改后,我将更改提交到我的分支。并尝试了以下内容:
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 。这实际上有效!为什么会这样呢?它听起来并不像预期的行为。
答案 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
答案 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
。