小编典典

致命:当前分支master没有上游分支

all

我正在尝试将我的一个项目推送到 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

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

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

fatal: Authentication failed

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

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

fatal: Authentication failed

然后我尝试了这个:

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

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

fatal: Authentication failed

有什么提示吗?


阅读 211

收藏
2022-04-01

共1个答案

小编典典

您修复了推送,但是,独立于该推送问题(我在“为什么我需要显式推送新分支?
”中解释过:git push -u origin mastergit push -u origin --all),您现在需要解决身份验证问题。

这取决于您的网址(如 ‘ 中的 sshgit@github.com/yourRepo或如中的 https
https://github.com/You/YourRepo

对于 https 网址:

如果您的帐户受双重身份验证保护,则您的常规密码将不起作用(对于 httpsurl)所述。

如果您的密码包含特殊字符,则同样的问题:

如果用户名或密码包含“某些”特殊字符,似乎存在一些问题(如果使用 https)。

所以,我在 GitHub 的应用程序设置页面(使用“创建新令牌”按钮)中生成了一个二级密码(“个人访问令牌”),我确实复制了这个令牌。然后我在 Settings->Version Control->GitHub 中选择了 Auth Type: Token,并粘​​贴了 token。

测试它:用户连接成功。现在 git push 完美运行。

如果 https 不起作用(因为您不想生成辅助密钥,即 PAT:个人访问令牌),那么您可以切换到ssh,如我在此处所示。
首先,您可以确保使用正确的 URL:

git remote set-url origin https://github.com/zkirkland/Random-Python-Tests.git

然后,如果它以前可以工作,并且没有询问您的用户名,那一定是因为您已将凭据(登录名/密码)存储在$HOME/.netrc文件中,如此处所述。您可以仔细检查这些设置,并确保您的代理(如果有)没有更改。

检查 的输出git config --global credential.helper
并确保凭据是您的 GitHub 用户帐户和PAT(个人访问令牌)


如果这仍然不起作用,您可以切换到 SSH URL:

git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git

但这意味着您已经在您的帐户设置中发布了您的 SSH 公钥。

您可以取消选择该设置git.terminalAuthentication以避免出现错误消息。


正如评论中所指出的,您可以使用以下命令在远程自动创建同名分支:

git push -u origin head

为什么?

  • HEAD(查看您的.git\HEAD文件)具有当前签出分支的 refspec(例如ref: refs/heads/master:)
  • 默认推送策略很简单

由于用于此推送的 refpec 是 head:(无目的地),因此缺少更新与(head,它是一个分支):<dst>相同的 ref 的方法。<src>

2022-04-01