我为测试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

当前回答

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

其他回答

我的理解是-u或——set-upstream允许你为你所在的分支指定上游(远程)存储库,这样下次你运行git push时,你甚至不必指定远程存储库。

推送并设置上游(远程)存储库为原点:

$ git push -u origin

下次推送时,你不必指定远程存储库:

$ git push

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

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

两者之间的区别

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时都指定要从哪个分支拉取。

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

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

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

git push -u origin coffee

在Git 2.37.0版本中,不需要使用——set-upstream origin。 启用push后,可以直接使用git push。使用下面的autoSetupRemote:

git config --global --add --bool push.autoSetupRemote true

来源:James Ide的推特

希望这能有所帮助!