Git推送错误:仓库未找到。

660

我在使用 gitgithub 时遇到了一个非常奇怪的问题。当我尝试进行推送时,我会得到以下错误消息:

git push -u origin master
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly

我添加了远程仓库:

git remote add origin git@github.com:account-name/repo-name.git

有任何想法吗?


7
是的,这就是我得到 git remote add origin git@github.com:account-name/repo-name.git 的方式。它存在于GitHub上,是一个私有仓库。 - Justin
2
你改过你的 GitHub 用户名吗? - Ankit
1
你尝试过以下10个答案都没有解决你的问题吗? - dhaval
4
这是否与仓库的读写权限有关?我的仓库只允许读取,当我尝试推送一些内容时就会收到这条消息。请问是否有任何机会解决这个问题? - Michael
6
我遇到了同样的问题,我通过更新.git/config文件来解决它。我将用户名放在[remote "origin"]部分的URL键中。 - Ahmed Jehanzaib
显示剩余6条评论
70个回答

760

检查是否具有读写权限。

Git的错误信息具有误导性。我之前也遇到了类似的问题。我被加入到一个现有的项目中,我克隆了它并提交了本地更改。我尝试推送,但得到了“错误:找不到存储库”的错误信息。

将我添加到项目的人给了我只读访问权限。他们进行了更改后,我就能够推送了。


480
一定要喜欢那些有用的Git错误消息。刚克隆下来的代码库找不到了?撒谎者。请跟我来,我会告诉你该怎么做。 - Grant Birchmeier
是的,我也遇到了同样的问题——没有提交权限,而且你会收到这个非常难以理解的错误信息 <叹气> - rogerdpack
26
谢谢!您可以通过在网页上查看该项目并单击“新文件”来检查此内容。 - Ronnie
3
我的密码中有一个 ` 符号,PhpStorm 上传 git 时会自动移除这个符号前面的字符:举个例子,我的密码是 _pa``ssword_Phpstorm 输出如下:https://_username_:_password_@github.com/_username_/repo.git而不是https://_username_:_pa``ssword_@github.com/_username_/repo.git我把密码改成不包含 ` 符号的内容,就可以正常工作了! - Ruben Arevalo
遇到了类似的问题。我之前有写入权限的其中一个仓库,但是有人更改了权限,花了一段时间才弄清楚发生了什么。 - aravindaM
显示剩余6条评论

335

我曾遇到同样的问题,那是一个私有仓库。

请按照以下步骤操作:

删除远程仓库(origin)。

git remote rm origin

请重新添加源,但使用您的用户名和密码,并具有对此私人仓库的写入权限。

git remote add origin  https://USERNAME:PASSWORD@github.com/username/reponame.git

23
如果密码中有@符号怎么办? - AnupamChugh
35
您需要将密码中的“@”替换为“%40”。您可以通过运行JS代码“encodeURIComponent(password)”进行检查。 - elquimista
4
我建议您使用凭证助手而不是以明文形式存储密码:https://help.github.com/articles/caching-your-github-password-in-git/ - johnsyweb
6
终于!这个问题是针对私有仓库的。如果你有一个私有仓库,并按照Github的指示从本地Xcode推送现有仓库到远程Github时遇到以下错误,那么这个解决方法适用:`$ git push -u origin masterremote: Repository not found.fatal: repository 'https://github.com/teksunios/Abc.git/' not found` - iHarshil
20
用户名和密码不再可用,您需要使用您的个人访问令牌,例如 git remote set-url origin https://PERSONAL_ACCESS_TOKEN@github.com/username/reponame.git - chavy
显示剩余13条评论

173

我遇到了同样的问题,通过在仓库URL中包含我的用户名和密码解决了它:

git clone https://myusername:mypassword@github.com/path_to/myRepo.git

51
这个方法适用于我,只需添加我的用户名:https://myusername@github.com/path_to/myRepo.git - redolent
14
这个方法是有效的,但很多人可能会认为它存在安全隐患,使用时要谨慎。 - Alexander Mills
这对我有用。我之前已经使用过Git Bash,但无法弄清如何更改帐户,所以就这样了。虽然不太喜欢,但它确实有效。 - HartleySan
2
作为对我的原始评论的跟进,一旦您成功推送一次,您可以使用“git remote set-url origin url”命令将您的起源URL更改为相同的内容,而无需用户名和密码,然后它就可以正常工作。 - HartleySan
3
截至2021年8月13日,GitHub不再支持此方法,因此这将无法起作用。 - Fewture Webdesign
显示剩余5条评论

135

如果你在 Windows 上使用 Git,请尝试清除你的凭据:

  1. 找到“凭据管理器”(应该在控制面板中)
  2. 删除与 GitHub 相关的所有凭据

插入图像描述


9
谢谢你的成功提示!顺便说一句,使用以下命令,您可以直接转到凭据管理器:"control.exe /name Microsoft.CredentialManager" - Chris
6
这个有效,我在 Github 上有另一个账户导致了问题。 - Mokhtar Ashour
你节省了我的时间。我在使用Sourcetree后遇到了同样的问题。我添加了多个Git账户,这破坏了Git配置。删除凭据后,它就像魔术般地工作了。谢谢! - iconique
我已经从中删除了所有凭据,然后尝试将其再次推送到仓库,但我仍然收到相同的错误提示!“找不到仓库” - Jayna Tanawala

92

我遇到了相同的错误

ERROR: Repository not found.   
fatal: The remote end hung up unexpectedly

我在Github上创建了一个代码库并将其克隆到本地。

我通过打开.git/config文件并删除[remote "origin"]部分来解决问题。

[remote "origin"]   
   url = git@github.com:alexagui/my_project.git  
   fetch = +refs/heads/*:refs/remotes/origin/*

然后我再次运行了以下命令

git remote add origin git@github.com:alexagui/my_project.git  
git push -u origin master

这次我成功地向代码库推送了更改。


3
你能解释一下你是如何打开.git/config文件并删除[remote "origin"]部分的吗? - Davi Moreira
我来这里是为了寻求类似问题的答案。我从IntelliJ IDEA创建了一个新的存储库,但在尝试进行初始推送时收到了相同的错误消息。Alex Aguilar的答案启发了我进入.git / config文件,并编辑存储库URL,使其使用我的用户名(首字母大写),而一开始它并没有这样做。这解决了我的问题。 - Vallle
.git/ 目录可以在项目的根目录中找到。 - Gui Imamura
为什么这是必要的?我改了我的用户名,现在我面临着各种问题。 - AjB
1
@DaviMoreira 你可以通过 sudo nano .git/config 或者 vim .git/config 打开并编辑你的 .git/config 文件。两种方式都会打开一个内联编辑器,对于第一种方式,你需要输入 sudo 密码。我建议你搜索一些快捷键,以便学会如何保存和退出编辑器。 - Suki
显示剩余5条评论

63

我之前一直没问题,但是现在出现了这个错误。我的问题是缺少与 Github 账户绑定的 ssh 密钥。你可以使用 ssh-add -l 命令检查你当前的 ssh 密钥。

如果你的密钥丢失了,你可以使用以下方式添加:

ssh-add ~/.ssh/your_key

4
我更改了我的Github账户,因此必须更改现有的SSH密钥。你的修复方法解决了问题,谢谢! - Thomas Potaire
我必须运行 eval "$(ssh-agent -s)" 然后 ssh-add <key> 否则它不起作用。 - Islam
怎么做,有教程吗?我不明白。 - undefined

58

当我尝试推送到之前有权限访问的私有仓库时,遇到了这个错误。问题不在于仓库是私有还是公共的,而是Github API现在使用个人令牌进行身份验证和授权,而不是用户名和密码。

以下解决了我的问题:

  1. 删除远程源:git remote remove origin

  2. 生成个人令牌:您可以在Github文档中找到说明。

  3. 重新添加源,但使用您的用户名和生成的令牌:

git remote add origin https://USERNAME:GENERATED_TOKEN@github.com/username/reponame.git

注意: 如果您在创建和使用令牌一段时间后遇到此问题,请确保令牌未过期。如果过期了,请重新生成它,并确保为使用旧令牌的仓库重复步骤3(上述提到)。另外,如果您更改了令牌,请为使用旧令牌的仓库重新执行步骤3。


7
太不可思议了!这是唯一对我起作用的方法,谢谢! - csstudent1418
5
@csstudent1418 感谢您的回复!^^它对您有所帮助,我很高兴。 - Dr.Simplisist
4
这是解决方案,不确定为什么它没有得到更多的赞同。 - Data Science Enthusiast
如果我正在加载一个 ssh 密钥,它不应该工作吗? - J86
1
这对我也起作用了,使用私有仓库。 - user42
1
太好了!这也解决了我的问题,即提交显示为在IntelliJ中存储的两个GitHub帐户,现在它只显示我为项目选择的一个。 - Richard KeMiKaL GeNeRaL Denton

35

我使用的是Mac电脑,我在寻找解决方案时遇到了困难。 我的远程地址没问题,正如所说,这是一个凭证问题。 显然,在过去我曾经在计算机上使用另一个Git账户,而mac的钥匙串记住了先前帐户的凭据,因此我真的没有权限推送。

如何解决? 在您的Mac上打开钥匙串访问,选择“所有项目”类别并搜索git。 删除所有找到的结果。

现在转到终端并再次尝试推送。 终端将要求输入用户名和密码。 输入新的相关凭据即可!

希望它能帮助到某个人。我当时为此挣扎了几个小时。


3
谢谢谢谢谢谢谢谢!!!我已经对着墙撞头了。 - potibas
这真的很有帮助。尝试了所有方法,但就是无法理解。Push、Pull和Clone在IntelliJ中可以工作,但在终端中却不行。清理Keychain后,它就像魔术一样奏效了。 - Achyut
对于 macOS,这是唯一有效的解决方案。谢谢。 - Niraj
@Gal Shahar,你知道自己是最棒的吧? - imran haider
如果我想同时使用多个GitHub账户怎么办? - Akshay Bhimani
非常感谢你,兄弟,你救了我的命,所有的解决方案都没有起作用。 - undefined

28

3
同样的问题。访问私有仓库时显示 remote: Repository not found.,因为仍然使用旧凭据连接到仓库(即使本地git配置中已经有了新凭据)。要解决问题:1)从钥匙串中删除密钥。2)再次在终端中运行命令。3)应该会要求输入用户名和密码。 - Nike Kov
2
这对我解决了问题。在钥匙串中删除了凭据,通过 Github GUI 获取了新的个人访问令牌,现在已经可以运行了,谢谢。 - Anthony
@Antoine的回答就是我的情况。不幸的是,我在解决问题之后才发现这个答案。在我的情况下,我只是打开了2FA(双因素认证)。这破坏了我的密码。所以,我清除了凭据(就像这个页面上的人说的那样),但是重新克隆存储库仍然无法使用我的密码(我猜测是由于2FA)。因此,我创建了一个个人访问令牌(https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)来代替密码。我只给它存储库访问权限,因为它在命令行上使用。 - cwingrav

26
git remote rm origin
git remote add origin <remote url>

适用于我。这个问题在git更新后开始出现。 - karthikdivi
通过使用 git@ 的 URL 替换 https 的 URL,这对我有效。 - Skoua

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