克隆仓库时遇到问题,可以先检查下面几类常见错误。
HTTPS 克隆错误
使用 Git 通过 HTTPS 访问仓库时,可能遇到以下常见错误。它们通常与 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 版本,可从 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。
提供访问令牌
范围说明:公开仓库通常可匿名克隆;下面的令牌要求针对需要认证的 HTTPS 操作。不要把令牌直接写进远程 URL、命令记录或文章。遇到权限拒绝时应核实授权,切换协议本身不会赋予新的仓库权限。
通过 HTTPS 进行需要身份验证的 Git 操作时,应使用个人访问令牌(personal access token),不能使用 GitHub 账户密码。详情见“管理个人访问令牌”。
如果组织启用了 SAML SSO,而你使用的是传统个人访问令牌(personal access token classic),还需要先授权该令牌访问组织,再进行身份验证。 有关详细信息,请参阅 关于使用单一登录进行身份验证 和 授权个人访问令牌以与单点登录一起使用。
检查您的权限
命令行提示输入用户名和密码时,请使用拥有该仓库访问权限的账户;这里的“密码”位置应填写相应的个人访问令牌。
提示
如果不想在每次与远程存储库交互时都输入用户名和密码,可以打开凭据缓存。 如果已在使用凭据缓存,请确保您的计算机缓存了正确的凭据。 不正确或过期的凭据将导致身份验证失败。
改用 SSH
如果您以前设置了 SSH 密钥,便可使用 SSH 克隆 URL,而不使用 HTTPS。 有关详细信息,请参阅“关于远程仓库”。
错误:未找到仓库
克隆时出现此错误,表示仓库不存在,或当前账户无权访问。可以依次检查下面几项。
检查拼写
拼写错误很容易发生。例如尝试克隆 git@github.com:owner/repotile.git,而仓库实际名为 owner/repoti1e,则会收到此错误。
要避免此错误,克隆时,始终从仓库页面复制和粘贴克隆 URL。 有关详细信息,请参阅“克隆仓库”。
要更新本地仓库已配置的远程地址,请参阅 管理远程仓库。
检查您的权限
如果您尝试克隆私有仓库,但没有查看仓库的权限,您将收到此错误。
确认你通过以下身份之一获得了仓库访问权限:
检查 SSH 访问权限
在极少数情况下,您可能没有仓库的适当 SSH 访问权限。
你应确保所使用的 SSH 密钥已关联到你在 GitHub 上的个人账户。 可以通过在命令行中键入以下内容检查此项:
$ ssh -T git@github.com
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.
这条欢迎信息表示 SSH 身份认证成功;“不提供 shell access”是 GitHub 的正常说明,不表示认证失败。它仍不能单独证明你有权访问每一个具体仓库。
如果仓库属于某个组织,而你使用的 SSH 密钥由 OAuth 应用生成,该应用的访问权限可能受到组织所有者的限制。 有关详细信息,请参阅“关于 OAuth 应用访问限制”。
有关详细信息,请参阅 向 GitHub 帐户添加新的 SSH 密钥。
检查仓库是否确实存在
如果所有其他操作都失败,请确保存储库确实存在于 GitHub.com! 如果您尝试推送不存在的仓库,您将收到此错误。
错误:远程 HEAD 引用不存在的 ref,无法检出
如果仓库在 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.
修复远程仓库的默认分支需要该仓库的管理员权限。管理员需要更改存储库的默认分支。
之后,在本地可以列出所有可用分支:
$ 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'












暂无评论内容