跳到主要内容

克隆错误故障排除

如果您在克隆仓库时遇到问题,请检查这些常见错误。

HTTPS 克隆错误

使用 HTTPS 与 Git 时,有一些常见的错误。这些错误通常表示您的 Git 版本过旧,或者您无权访问该仓库。

以下是一些您可能收到的 HTTPS 错误示例

> error: The requested URL returned error: 401 while accessing
> https://github.com/USER/REPO.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://github.com/USER/REPO.git/info/refs
> fatal: HTTP request failed
> Error: https://github.com/USER/REPO.git/info/refs not found: did you run git
> update-server-info on the server?

检查您的 Git 版本

与 GitHub 交互没有最低的 Git 版本要求,但我们发现 1.7.10 版本是一个稳定且在许多平台上都可用的版本。您始终可以 从 Git 网站下载最新版本

确保远程仓库地址正确

您尝试获取的仓库必须存在于 GitHub.com 上。

您可以通过打开命令行并输入 git remote -v 来查找本地仓库的 URL。

$ git remote -v
# View existing remotes
> origin  https://github.com/ghost/cocoareactive.git (fetch)
> origin  https://github.com/ghost/cocoareactive.git (push)

$ git remote set-url origin https://github.com/ghost/ReactiveCocoa.git
# Change the 'origin' remote's URL

$ git remote -v
# Verify new remote URL
> origin  https://github.com/ghost/ReactiveCocoa.git (fetch)
> origin  https://github.com/ghost/ReactiveCocoa.git (push)

或者,您可以通过我们的 GitHub Desktop 应用程序更改 URL。

提供访问令牌

要访问 GitHub,您必须使用个人访问令牌而不是密码进行身份验证。有关更多信息,请参阅“管理您的个人访问令牌”。

如果您正在访问使用 SAML SSO 的组织,并且您正在使用个人访问令牌(经典版),则在身份验证之前,您还必须授权您的个人访问令牌访问该组织。有关更多信息,请参阅“关于使用 SAML 单点登录进行身份验证”和“授权个人访问令牌用于 SAML 单点登录”。

检查您的权限

当系统提示您输入用户名和密码时,请确保您使用的是具有访问该仓库权限的帐户。

提示

如果您不想每次与远程仓库交互时都输入凭据,则可以启用 凭据缓存。如果您已经在使用凭据缓存,请确保您的计算机缓存了正确的凭据。不正确或过时的凭据会导致身份验证失败。

改用 SSH

如果您之前已设置 SSH 密钥,则可以使用 SSH 克隆 URL 而不是 HTTPS。有关更多信息,请参阅“关于远程仓库”。

错误:未找到仓库

如果您在克隆仓库时看到此错误,则表示该仓库不存在或您无权访问它。根据原因,此错误有几个解决方法。

检查您的拼写

拼写错误很常见。如果您尝试克隆 [email protected]:owner/repotile.git,但仓库的实际名称为 owner/repoti1e,则会收到此错误。

为避免此错误,在克隆时,始终从仓库页面复制并粘贴克隆 URL。有关更多信息,请参阅“克隆仓库”。

要更新现有仓库上的远程仓库地址,请参阅“管理远程仓库”。

检查您的权限

如果您尝试克隆私有仓库但没有权限查看该仓库,则会收到此错误。

请确保您以以下某种方式访问该仓库

  • 仓库所有者
  • 仓库的 协作者
  • 具有访问仓库权限的团队的 成员(如果仓库属于某个组织)

检查您的 SSH 访问权限

在极少数情况下,您可能没有正确的 SSH 访问权限来访问仓库。

您应该确保您使用的 SSH 密钥已附加到您在 GitHub 上的个人帐户。您可以通过在命令行中输入以下内容来检查:

$ ssh -T [email protected]
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

如果仓库属于某个组织,并且您正在使用由 OAuth 应用程序生成的 SSH 密钥,则组织所有者可能已限制 OAuth 应用程序的访问权限。有关更多信息,请参阅“关于 OAuth 应用程序访问限制”。

有关更多信息,请参阅 将新的 SSH 密钥添加到您的 GitHub 帐户

检查仓库是否存在

如果其他方法都失败,请确保该仓库确实存在于 GitHub.com 上!如果您尝试推送到不存在的仓库,则会收到此错误。

错误:远程 HEAD 指向不存在的引用,无法检出

如果仓库的默认分支已在 GitHub.com 上删除,则会出现此错误。

检测此错误很简单;当您尝试克隆仓库时,Git 会警告您。

$ git clone https://github.com/USER/REPO.git
# Clone a repo
> Cloning into 'repo'...
> remote: Counting objects: 66179, done.
> remote: Compressing objects: 100% (15587/15587), done.
> remote: Total 66179 (delta 46985), reused 65596 (delta 46402)
> Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done.
> Resolving deltas: 100% (46985/46985), done.
> warning: remote HEAD refers to nonexistent ref, unable to checkout.

要修复此错误,您需要成为 GitHub.com 上该仓库的管理员。您需要 更改仓库的默认分支

之后,您可以从命令行获取所有可用分支的列表

$ git branch -a
# Lists ALL the branches
>   remotes/origin/awesome
>   remotes/origin/more-work
>   remotes/origin/new-main

然后,您可以切换到您的新分支

$ git checkout new-main
# Create and checkout a tracking branch
> Branch new-main set up to track remote branch new-main from origin.
> Switched to a new branch 'new-main'