【问题标题】:git clone with https error - fatal: repository not found带有 https 错误的 git clone - 致命:找不到存储库
【发布时间】:2017-07-15 16:51:33
【问题描述】:

我派生了一个 私有 存储库,我被邀请参与协作,但每次我尝试使用 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

Note: 'usernamex' and 'privat-repo' are just examples


以下是我尝试过的一些事情,但没有成功:

  • 验证 URL 的有效性 - 检查拼写和大小写。通过单击download ZIP 按钮,我可以访问repo URL 并通过我的浏览器下载其内容。
  • 要求所有者克隆我的叉子 - 他克隆我的叉子没有问题,但我做到了。
  • 已联系 GitHub 支持...
  • 根据 GitHub 支持,cleared cached credentials - 系统要求我的用户名和密码为 git clonegit push,这一事实证实了这一点。事实上,我可以在我的帐户中克隆和推送其他(公共)存储库。
  • 浏览了 GitHub 的 HTTPS Cloning Errors 指南,但“使用 SSH 代替” 除外,因为这并不能真正解决问题。
  • 在 stackoverflow.com 中查看过类似问题 - 尝试了大多数建议的答案(见上文)。

我正在通过终端在 mac 上运行 git 2.10,正如我所提到的,我对 HTTPS 的变通方法不感兴趣(例如:SSH 或 GitHub Desktop)。

任何想法为什么会发生这种情况?

【问题讨论】:

    标签: git github https git-clone


    【解决方案1】:

    This Github document 读作:

    https:// 克隆 URL 可用于所有存储库(公共和私有)。

    但由于您尝试访问私有存储库,因此需要进行身份验证。一种方法是将用户名和密码附加到以下地址:

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

    但是same page 写着:

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

    如果您启用了 2FA,请查看this page 了解生成个人访问令牌的步骤。请记住,您应该检查您的个人令牌的完整 repo 范围(如下所示)。

    【讨论】:

    • 我尝试了这个和另一个变体(即:git clone usernamex@github.com/usernamex/privat-repo.git),它会提示您输入密码,但错误仍然存​​在。
    • 您的令牌是否对您的存储库具有完全访问权限?
    • 就是这样!令牌只能访问“public_repo”。我更新了令牌并克隆了它。谢谢!
    • 如果您使用两因素授权,那么只需使用 SSH 选项来克隆您的存储库。它看起来像 'git clone git@github.com:your-repository-here.git'
    • 你的回答救了我,谢谢!我已经尝试了我能找到或知道的所有其他选项,然后在看到这个后意识到我在创建新令牌时没有检查任何选项。
    【解决方案2】:

    我今天也遇到了 github 凭据的一些问题,因为用户/密码身份验证似乎已被弃用:

    对密码身份验证的支持已于 2021 年 8 月 13 日移除。请改用个人访问令牌。 远程:请参阅https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ 了解更多信息。

    我最终添加了new SSH key for github authentication。还有,重要说明


    不要使用 HTTPS 克隆:

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

    改为使用 SSH 进行克隆:

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

    不要在 .git/config 中使用 HTTPS 作为上游

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

    .git/config 中使用 SSH 作为上游

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

    【讨论】:

      【解决方案3】:

      使用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 然后,在本地克隆 repo,

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

      请确保同时更新您的 .git/config 文件以匹配此 ssh 网址

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

      【讨论】:

        【解决方案4】:

        如果您尝试从您被授权的帐户以外的帐户克隆存储库(如果它是其他人的存储库)并且它来自 https url,请更改部分中的 https://你的克隆命令到http://。 Bash 会自动将请求改回 https,就像魔术一样,repo 将成功克隆。我在 Windows 上遇到了这个问题(通过 git Windows 安装附带的 mingw64 git bash 终端/cli。) 我尝试通过 https url 克隆并不断收到此响应:

        $ 致命:未找到存储库“https://github.com/random-user/random-repo.git/”

        我尝试了上述所有建议,但没有任何效果。最终,我尝试从 url 中删除 's',并得到以下响应:

        $ git clone http://github.com/random-user/random-repo.git 克隆到“RomanianCoderExamples”... 警告:重定向到https://github.com/random-user/random-repo.git/ 远程:枚举对象:175,完成。

        顺便说一句,上面的链接是自动添加的,几乎可以肯定不起作用。如果他们这样做了,那么某人真的需要重新考虑他们的命名方案

        【讨论】:

          【解决方案5】:

          如果给定的 URL 是正确的,还应该检查一下,它可能与系统上已经保存的一些 git 凭据有关:

          Git - remote: Repository not found

          【讨论】:

            【解决方案6】:

            虽然这可能不适用于您的特定实例 - 这可能会帮助遇到同样问题的其他人。

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

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

            【讨论】:

              【解决方案7】:

              以上都不适合我。我所做的是创建了一个个人访问令牌。当我被提示输入我粘贴在令牌中的用户名和密码时,我粘贴了令牌,然后它只克隆了 repo 和瞧!。

              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
              

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                猜你喜欢
                • 1970-01-01
                • 2014-03-01
                • 1970-01-01
                • 1970-01-01
                • 2013-12-11
                • 2019-10-24
                • 2020-08-25
                • 2022-10-23
                • 2015-07-30
                相关资源
                最近更新 更多