Skip to main content

クローンエラーのトラブルシューティング

リポジトリのクローン作成に問題がある場合は、次の一般的なエラーを確認します。

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 をお勧めします。バージョン 1.7.10 は多くのプラットフォームで利用できます。 いつでも Git の Web サイトで最新バージョンをダウンロードできます

リモートが正しいことを確かめる

フェッチしようとしているリポジトリが、 に存在する必要があります。また、URL では大文字と小文字が区別されます。

コマンド ラインを開き、「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 にアクセスするには、パスワードではなく personal access token で認証を行う必要があります。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

SAML SSO を使う organization にアクセスしており、personal access token (classic) を使っている場合、認証を受けるには、事前に personal access token に対して organization へのアクセス権限を認可する必要があります。 詳細については、「SAMLのシングルサインオンでの認証について」と「SAMLシングルサインオンで利用するために個人アクセストークンを認可する」を参照してください。

権限を確認します

ユーザ名およびパスワードを求められた場合は、該当のリポジトリにアクセスできるアカウントを使用してください。

Tip

リモート リポジトリを操作するたびに資格情報を入力したくない場合は、資格情報のキャッシュを有効にできます。 すでに認証情報のキャッシュを使用している場合は、コンピューターに正しい認証情報がキャッシュされていることを確認してください。 認証情報が正しくない、または古い場合、認証に失敗します。

代わりに SSH を使用する

すでに SSH キーをセットアップしている場合は、HTTPS の代わりに SSH クローン URL を使用できます。 詳しくは、「リモートリポジトリについて」をご覧ください。

Error: Repository not found

リポジトリのクローン作成時にこのエラーが表示される場合、リポジトリが存在しないか、リポジトリにアクセスする権限がないことを示します。 原因によっては、このエラーに対していくつかの解決策があります。

綴りをチェックしてください

入力ミスが発生します。 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.

リポジトリが Organization に属し、OAuth app によって生成された SSH キーを使用している場合、OAuth app のアクセスは Organization 所有者によって制限されている可能性があります。 詳しくは、「OAuth アプリのアクセス制限について」をご覧ください。

詳しくは、「GitHub アカウントへの新しい SSH キーの追加」をご覧ください。

リポジトリが実際に存在することを確認する

すべて失敗した場合は、リポジトリが GitHub.com に実際に存在していることを確認してください。 存在しないリポジトリにプッシュを試みると、このエラーが表示されます。

Error: Remote HEAD refers to nonexistent ref, unable to checkout

このエラーは、リポジトリの既定のブランチが 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'