我为测试Solaris和Sun Studio创建了一个本地分支。然后我把树枝推到上游。在提交更改并试图推动更改之后:

$ git commit blake2.cpp -m "Add workaround for missing _mm_set_epi64x"
[solaris 7ad22ff] Add workaround for missing _mm_set_epi64x
 1 file changed, 5 insertions(+)
$ git push
fatal: The current branch solaris has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin solaris

为什么我要为此做点特别的事?

是否有任何合理的用例,其中有人将创建<分支>,将<分支>推到远程,然后声称<分支>上的提交不应该用于<分支>?


我遵循了Stack Overflow上的这个问题和答案:将一个新的本地分支推到远程Git存储库并跟踪它。我猜这是另一个不完整或错误的接受答案的例子。或者,这是Git将一个简单的任务变得困难的另一个实例。


这是另一台机器上的视图。分支清楚地存在,所以它被创建和推送:

$ git branch -a
  alignas
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/alignas
  remotes/origin/arm-neon
  remotes/origin/det-sig
  remotes/origin/master
  remotes/origin/solaris

当前回答

一个基本完整的命令是git push <remote> <local_ref>:<remote_ref>。如果你只运行git push, git不知道该做什么,除非你做了一些配置来帮助git做决定。在git回购中,我们可以设置多个遥控器。我们还可以将本地引用推入到任何远程引用。使用full命令是最直接的推入方式。如果你想输入更少的单词,你必须先配置,比如——set-upstream。

其他回答

-u标志指定您想要将本地分支链接到上游分支。如果上游分支不存在,这也将创建一个上游分支。这些答案中没有一个涵盖我是如何做到的(完整的形式),所以它是:

git push -u origin <your-local-branch-name>

所以如果你当地的分支机构名称是咖啡

git push -u origin coffee

如果你不想考虑这个问题,也不想修改你的配置:

Git push——set-upstream origin $(Git分支——show-current)

一个基本完整的命令是git push <remote> <local_ref>:<remote_ref>。如果你只运行git push, git不知道该做什么,除非你做了一些配置来帮助git做决定。在git回购中,我们可以设置多个遥控器。我们还可以将本地引用推入到任何远程引用。使用full命令是最直接的推入方式。如果你想输入更少的单词,你必须先配置,比如——set-upstream。

如果你忘记添加存储库HTTPS链接,那么把它与git push <repo HTTPS>

两者之间的区别

git push origin <branch>

and

git push --set-upstream origin <branch>

它们都可以很好地推送到远程存储库,但只有当您进行拉取时才会注意到差异。

如果你有:

git push origin <branch>

拉的时候,你必须做到:

git pull origin <branch>

但如果你这样做了:

git push --set-upstream origin <branch>

那么,在拉的时候,你只需要做:

git pull

添加——set-upstream可以让你不必每次git pull时都指定要从哪个分支拉取。