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'