我正在尝试将我的一个项目推送到 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
有什么提示吗?
您修复了推送,但是,独立于该推送问题(我在“为什么我需要显式推送新分支? ”中解释过:git push -u origin master或git push -u origin --all),您现在需要解决身份验证问题。
git push -u origin master
git push -u origin --all
这取决于您的网址(如 ‘ 中的 sshgit@github.com/yourRepo或如中的 https https://github.com/You/YourRepo)
git@github.com/yourRepo
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文件中,如此处所述。您可以仔细检查这些设置,并确保您的代理(如果有)没有更改。
$HOME/.netrc
检查 的输出git config --global credential.helper。 并确保凭据是您的 GitHub 用户帐户和PAT(个人访问令牌)。
git config --global credential.helper
如果这仍然不起作用,您可以切换到 SSH URL:
git remote set-url origin git@github.com:zkirkland/Random-Python-Tests.git
但这意味着您已经在您的帐户设置中发布了您的 SSH 公钥。
您可以取消选择该设置git.terminalAuthentication以避免出现错误消息。
git.terminalAuthentication
正如评论中所指出的,您可以使用以下命令在远程自动创建同名分支:
git push -u origin head
为什么?
.git\HEAD
ref: refs/heads/master
由于用于此推送的 refpec 是 head:(无目的地),因此缺少更新与(head,它是一个分支):<dst>相同的 ref 的方法。<src>
:<dst>
<src>