推送到Git返回错误代码403致命错误。

15

我想将README.md推送到Github。
使用Ubuntu 14.04LTS
所以,我按照以下步骤进行提交。

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/user/repo.git
git push -u origin master

但是,发生了以下错误。

error: The requested URL returned error: 403 Forbidden while accessing https://github.com/user/repo.git/info/refs

fatal: HTTP request failed

我知道这样解决这个错误

git remote set-url origin https://username@github.com/user/repo.git

按照这种方式,我必须输入密码。

$ git push origin master
Password: 

但我不喜欢输入密码。

我已经检查过这个问题,但是我没有解决。
Pushing to Git返回错误代码403致命错误:HTTP请求失败

请告诉我如何在不输入密码的情况下进行推送。

8个回答

12

这可能解决您的问题:

git remote set-url origin https://username:userpwd@github.com/user/repo.git

@JanDoggen 这不是一个仅包含链接的答案,如果你仔细看答案,你会发现dilei给出了问题的答案而不是一个链接。 - Yusuf K.
@Yusuf明白了。而且他/她仍然应该解释为什么这可能会解决问题。在这个网站上,只有“代码”答案的价值很低。 - Jan Doggen
@JanDoggen 403错误意味着授权问题,因此此答案将用户名和密码发送到远程URL,这样就不会出现403错误了。 - Yusuf K.
除了高兴地攻击新手用户之外,这个方法是我唯一的解决方案。然而,这将会以明文形式存储你的密码在你的.git目录中。我建议将远端URL设置为 https://username@github.com/user/repo.git,如果需要缓存密码,请使用更合适的方式。这个问题发生在我改变了我的Github用户名后。我找不到一种方法来改变Git尝试用于远程的密码,但是dilei的答案是有效的 - John
是的,我也同意这个解决方案可以解决我的问题。在这个 CentOS6 系统上,无论使用哪个版本的 Git,.git-credentials 文件都被忽略了,但是这个修复方法让我可以继续使用它了。这里提供的信息已经足够实用了。 - lamont

6

您需要使用https并输入密码或使用ssh(并将公共ssh密钥与您的github帐户关联)

注:https和ssh均为网络传输协议,https是一种安全的超文本传输协议,而ssh则是一种加密的网络协议。


谢谢您的回答。 为什么我不能在没有密码的情况下使用https? 直到不久之前,我可以在没有密码的情况下使用https。 - technuma
如果您将存储库克隆为只读(即不使用用户名),则可以从https中无需密码拉取,但是除非您使用密码缓存,否则无法在https存储库中推送而不需要密码:https://help.github.com/articles/why-is-git-always-asking-for-my-password/ - Fernando
非常感谢。 可能我无法从多个设备推送。 因为我需要这样做git remote add origin https://username@github.com/user/repo.git可能我无法推送到这个远程仓库git remote add origin https://github.com/user/repo.git - technuma
如果您使用ssh远程,则需要在每个设备中添加每个用户的公钥才能进行推送。如果您使用https,则不必这样做,但是您将不得不输入密码(如果您使用具有长超时时间的缓存,则每个会话至少一次)。 - Fernando
你能提供一些代码或命令来执行吗?你的回答中如何实现这些事情? - Charlie Parker
请检查问题@CharlieParker上的set-url选项。 - Fernando

4
我认为这种情况发生的主要原因之一是由于您在本地机器到服务器的登录凭据存在问题。
如果我没记错,您需要:
(1) 确保您安装了稳定的git版本
(2) 确认远程库是否正确
(3) 如果启用了2FA,则提供访问令牌
(4) 检查您的权限(用户名/密码)
(5) 使用ssh而不是https 推送到Git返回错误代码403致命错误:HTTP请求失败可能会很有用,其中包含了关于您的问题的大量额外信息。

2

2
如果您使用多个Github账户,那么这也可能是问题的原因。Git会将您在操作系统凭据库中首先使用的用户名和密码保存下来。无论您的IDE告诉您什么,任何后续的请求都将使用这些详细信息。

1
如果您正在使用克隆或分叉版本,请仔细检查您尝试推送的存储库URL是否为您的分叉版本URL,而不是原始所有者的存储库URL。
git remote -v

1

我遇到了同样的错误

Error: The requested URL returned error: 403 while accessing

例如:https://github.com/Joey-project/repo.git/info/refs fatal: HTTP request failed 然后通过以下方法解决了问题
  1. 打开控制面板
  2. 打开用户账户
  3. 打开凭据管理器
  4. 打开Windows凭据
现在,在通用凭据选项卡中,查看GitHub /(任何其他主机)凭据,然后将您的用户名和/或密码编辑为它们的正确状态。

0

只需更新您的git客户端,就不会再出现此问题了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接