致命的:当前的分支主机没有上游分支

use*_*361 183 git github

我正在尝试将我的一个项目推送到github,并且我一直收到此错误:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master
Run Code Online (Sandbox Code Playgroud)

所以我试了一下,得到了这个:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed
Run Code Online (Sandbox Code Playgroud)

另一个stackoverflow线程建议我尝试以下,结果令人失望.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed
Run Code Online (Sandbox Code Playgroud)

任何提示?

小智 105

您还可以使用以下命令:

git push -u origin master
Run Code Online (Sandbox Code Playgroud)

这会在远程仓库中创建(-u)另一个分支.一旦使用ssh进行身份验证即可.

  • 这与问题非常相关,因为问题在于身份验证.他还说他已经在他的帖子中试过了. (2认同)
  • 我投票有两个原因。第一个:OP表示他已经尝试过了。第二个:-u选项是--set-upstream选项的快捷方式,它与创建新分支无关。从[`-u或`--set-upstream`选项的文档](https://git-scm.com/docs/git-push#Documentation/git-push.txt--u):“对于每个最新的或成功推送的分支,添加上游(跟踪)引用,该引用由无参数git-pull [1]和其他命令使用。” 其实我不明白为什么这个答案被误导了这么多。 (2认同)

Von*_*onC 75

你修复了推送,但是,独立于推送问题(我在" 为什么我需要明确地推送新的分支? ":git push -u origin masteror git push -u origin --all)中解释,你现在需要解决身份验证问题.

这取决于你的网址(ssh在' git@github.com/yourRepo,或https中https://github.com/You/YourRepo)

对于https网址:

如果您的帐户受双因素身份验证保护,则您的常规密码将无效(对于https网址),如此处 或此处所述.

如果您的密码包含特殊字符,则同样的问题(如本答案所示)

如果https不起作用(因为您不想生成辅助密钥,PAT:个人访问令牌),那么您可以切换到ssh,如我在此处所示.

  • 太棒了,这就是我们解决根本原因问题所需要的,而不仅仅是解决表面问题 (2认同)

The*_*Eye 35

显然,当您--all第一次按下时忘记参数时,您也会收到此错误消息.我写

git push -u origin
Run Code Online (Sandbox Code Playgroud)

这给了这个错误,它应该是

git push -u origin --all
Run Code Online (Sandbox Code Playgroud)

哦,我喜欢这些复制粘贴错误...

  • 谢谢.我在Visual Studio Code中遇到了这个错误,这很有效,但在多个开发人员的上下文中,有人可以解释一下这是做什么的吗? (3认同)

小智 20

在推送到分支之前先使用此命令

git config --global push.default current
Run Code Online (Sandbox Code Playgroud)

执行上述命令后使用 git push 命令。


小智 17

这意味着您的远程存储库中没有您的分支(您想要推送的分支),换句话说,它在您的远程存储库中不存在(尚未创建)...所以使用此代码:

git push -u origin 'your branch name'
Run Code Online (Sandbox Code Playgroud)

此代码将在您的远程存储库中创建您的分支并将其推送...


小智 12

您需要先配置遥控器,然后再按下.

git remote add origin url-to-your-repo
Run Code Online (Sandbox Code Playgroud)

实际指示


小智 10

请尝试这种情况

git push -f --set-upstream origin master
Run Code Online (Sandbox Code Playgroud)

  • **警告** 不要这样做。“-f”代表强制,你不应该在不知道主分支做什么的情况下强制推送它——这可能会丢弃远程服务器上的提交。 (7认同)
  • “不错”是对任何事情的真正不好的解释。“不错”会使您的答案非常糟糕。 (5认同)
  • 您应该提供有关其工作方式和原因的更多说明。 (4认同)

Abh*_*hek 9

在一个非常简单的方面,一旦你有其他分支,你就不能只用于推送一个分支

git push
Run Code Online (Sandbox Code Playgroud)

但是你现在需要指定分支,即使你已经结帐了你想要推送的分支,所以

git push origin <feature_branch>
Run Code Online (Sandbox Code Playgroud)

哪里可以连master分行


yl_*_*low 7

我犯了忘记提交的简单错误:

git commit -m "first commit"
Run Code Online (Sandbox Code Playgroud)

然后git push origin master工作。


Sid*_*ry 7

好吧,我在上传时遇到了同样的麻烦,并且通过执行它说的相同操作来解决了这个问题:早些时候,我试图通过https将终端推送到Linux中的存储库,例如

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git
Run Code Online (Sandbox Code Playgroud)

但是没有得到任何结果,因此我更深入地尝试:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master
Run Code Online (Sandbox Code Playgroud)

而且有效。这样,您将得到提示,输入用户名和密码。我还生成了一个令牌,并且粘贴了令牌,因此成功完成了它而不是密码。

  1. 要生成令牌,请转到您的Github帐户并在“开发人员设置”中,然后创建另一个令牌。
  2. 获取密码后,请复制该令牌,并在出现提示时将其粘贴在密码提示中。


小智 6

我有同样的问题

在此处输入图片说明

我解决了它使用下面的命令

$ git branch --set-upstream develop origin/develop
Run Code Online (Sandbox Code Playgroud)

它将在 .git 文件夹中的配置文件中添加一个配置。

在此处输入图片说明


FRa*_*bbi 5

第一次使用git pull origin your_branch_name 然后use git push origin your_branch_name


Dar*_*usV 5

如果定义了操作git push,则在命令行上未提供refspec的情况下应采取的措施,在远程服务器上未配置refspec,并且命令行上提供的任何选项均未暗示refspec。

去做就对了:

git config --global push.default current
Run Code Online (Sandbox Code Playgroud)

然后

git push
Run Code Online (Sandbox Code Playgroud)

  • @Mavamaarten 潜在的不利影响是什么? (2认同)
  • @kosii 从字面上看它的作用是:始终将本地分支推送到上游。这是我默认的工作方式,因为我认为 99% 的情况下在上游创建新分支没有什么坏处,但对其他人来说可能并非如此。 (2认同)