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 上,并且 URL 区分大小写。
你可以通过打开命令行并键入 git remote -v
来查找本地存储库的 URL。
$ git remote -v
# View existing remotes
> origin https://github.com/ghost/reactivecocoa.git (fetch)
> origin https://github.com/ghost/reactivecocoa.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'