使用https进行git clone时出现错误-fatal: repository not found

27

我复刻了一个被邀请协作的私人代码库,但每次尝试使用 HTTPS 克隆 时,都会收到以下错误信息:

$ git clone https://github.com/usernamex/privat-repo.git
cloning into 'privat-repo'...
Username for 'https://github.com':usernamex
Password for 'https://usernamex@github.com':
remote: Repository not found.
fatal: repository 'https://github.com/usernamex/privat-repo.git/' not found

注:'usernamex'和'privat-repo'仅为示例


以下是我尝试过但没有成功的方法:

  • 验证URL的有效性 - 检查拼写和大小写。我可以通过点击“下载ZIP”按钮从浏览器访问repo URL并下载其内容。
  • 要求所有者克隆我的fork - 他克隆我的fork没有任何问题,但我却有问题。
  • 联系GitHub支持...
  • 根据GitHub支持的建议,清除了缓存的凭据 - 这是由于系统需要我的用户名和密码才能使用git clonegit push进行确认。实际上,我可以克隆和推送我的其他(公共)存储库。
  • 按照GitHub的HTTPS克隆错误指南进行操作,但不包括“改用SSH”,因为这并没有真正解决问题。
  • 在stackoverflow.com上查看类似的问题 - 尝试了大多数建议的答案(请参见以上)。

我正在通过Terminal运行mac上的git 2.10,并且如我所提到的,我不感兴趣使用HTTPS的解决方法(例如SSH或GitHub Desktop)。

有任何想法为什么会发生这样的情况吗?


10个回答

56

这份 Github 文档 表示:

https:// 克隆 URL 可用于所有仓库,公共和私有。

但由于您正在尝试访问私有仓库,需要进行身份验证。一种方法是在地址后附加用户名和密码,如下:

git clone https://username:password@github.com/usernamex/privat-repo.git

但是同一页上的说明如下:

如果您已启用两步验证,或者正在访问使用SAML单点登录(SSO)的组织,则必须使用个人访问令牌进行身份验证,而不是使用您的GitHub用户名和密码。

如果已启用2FA,请查看此页面以获取生成个人访问令牌的步骤。请注意,您应该为个人访问令牌检查完整的repo范围(如下所示)。

输入图像描述


1
我尝试了这个方法和另一种变化(即:git clone https://usernamex@github.com/usernamex/privat-repo.git),它会提示你输入密码,但错误仍然存在。 - shaleshock
2
你的令牌是否具有对你的存储库的完全访问范围? - Pejman
5
就是这样!Token 只有 "public_repo" 的访问权限。我更新了 Token 并克隆了它。谢谢! - shaleshock
1
如果您正在使用双重认证,则只需使用SSH选项来克隆您的存储库。它看起来像这样:'git clone git@github.com:your-repository-here.git' - Olegdater
1
请注意,PAT(个人访问令牌)也可以在未启用2FA的情况下使用。 - Ham
显示剩余3条评论

1
使用 https,您需要创建个人访问令牌(PAT),并将此令牌用作每次密码。不要使用您的Github密码进行2FA。
但是,由于这样做是不合逻辑的,最简单的方法是使用 ssh 而不是 https
按照 Github 文档生成您的 ssh 令牌并将其添加到您的帐户中https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent,然后在本地克隆存储库, git clone git@github.com:USERNAME/REPO.git 请确保还更新您的 .git/config 文件以匹配此 ssh url。
[remote "origin"]
        url = git@github.com:USERNAME/REPO.git
        fetch = +refs/heads/*:refs/remotes/origin/*

1

对我而言,我需要访问私有仓库并且必须生成一个个人访问令牌。

接下来执行以下操作: $ git clone -b https://PAT:PAT@github.com/private-repo/repo.git

PAT是个人访问令牌。


0

以上的方法都对我没用。解决的方法是我创建了一个个人访问令牌。当提示用户名时,我将令牌粘贴进去,密码也是同理,然后才成功克隆了代码库,很神奇!

remote: Enumerating objects: 10642, done.
remote: Total 10642 (delta 0), reused 0 (delta 0), pack-reused 10642
Receiving objects: 100% (10642/10642), 510.06 MiB | 993.00 KiB/s, done.
Resolving deltas: 100% (7509/7509), done.
Updating files: 100% (2324/2324), done

在此之前,我收到了这个错误信息:
remote: Repository not found.
fatal: repository 'https://github.com/workrepo/repository_I_needed.git/' not found

0
今天我在使用github凭据时遇到了一些问题,因为似乎已经废弃了用户/密码身份验证:
引用: 2021年8月13日删除了密码身份验证的支持。请改用个人访问令牌。 远程:更多信息请参见https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
最后我添加了一个新的SSH密钥进行github身份验证。还有,重要提示:

不要使用HTTPS进行克隆:

git clone https://github.com/USERNAME/REPO.git

使用SSH进行克隆:

git clone git@github.com:USERNAME/REPO.git

不要将HTTPS用作.git/config中的上游。
[remote "origin"]
    url = https://github.com/USERNAME/REPO.git

改用SSH作为您的上游,在.git/config中进行配置。

[remote "origin"]
    url = git@github.com:USERNAME/REPO.git

0

0
如果您尝试从授权的帐户之外的另一个帐户克隆存储库(如果它是其他人的Repo),并且它来自https URL,请将克隆命令中https://更改为http://。Bash会自动将请求更改回https,像魔术一样,存储库将成功克隆。我在Windows上遇到了这个问题(通过mingw64 git bash终端/CLI,该终端与git Windows安装一起提供)。 我尝试通过https URL进行克隆,并持续收到以下响应: $ fatal: repository 'https://github.com/random-user/random-repo.git/' not found 我尝试了上面提到的所有建议,但都没用。最终,我尝试从URL中删除's',然后得到以下响应: $ git clone http://github.com/random-user/random-repo.git Cloning into 'RomanianCoderExamples'... warning: redirecting to https://github.com/random-user/random-repo.git/ remote: Enumerating objects: 175, done.
顺便提一句,上面的链接是自动添加的,几乎肯定无法使用。如果它们可以使用,那么某人真的需要重新考虑他们的命名方案。

0

在生成个人访问令牌时,请确保选择了正确的范围,这样可以节省我的时间!


您的回答可以通过添加更多支持信息来改进。请[编辑]以添加进一步的细节,例如引文或文档,以便他人可以确认您的答案正确。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

0

尽管这可能与您的特定情况无关,但这可能有助于其他遇到同样问题的人。

请仔细检查您当前在终端中所在的位置。如果在尝试克隆操作之前已经设置和删除文件,则有可能意外地将您当前的位置目录移动到垃圾箱中。终端不会立即显示此信息,但是如果您通过“cd..”命令向上跳一级文件层次结构,则可以看到您突然位于“. Trash”中。

在这种情况下,解决方案是返回到一个干净的工作文件夹并重试git clone命令。


0
如果您可以通过浏览器访问存储库,但是使用git clone命令失败了,则有可能是因为您使用了代理工具,将正确的URL转换为错误的IP地址,即主机问题或DNS问题。
尝试执行“ping github.com”或“nslookup github.com”命令,查看它们是否返回预期的IP地址。

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