Skip to main content

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

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

HTTPS クローニングエラー

Git で HTTPS を使用する際によく生じるエラーがいくつかあります。 これらのエラーは通常、古いバージョンの Git を使用しているか、もしくはリポジトリへのアクセス権を持っていないことが原因です。

HTTPS エラーの例を次に示します:

> error: The requested URL returned error: 401 while accessing
> https://ホスト名/user/repo.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://ホスト名/user/repo.git/info/refs
> fatal: HTTP request failed
> Error: https://ホスト名/user/repo.git/info/refs not found: did you run git
> update-server-info on the server?

使用している Git のバージョンを確認する

GitHub Enterprise Server を使用するために最低限必要な Git のバージョンはありませんが、安定度の高いバージョン 1.7.10 を推奨しています。バージョン 1.7.10 は多くのプラットフォームで利用可能です。 いつでも Git の Web サイトで最新バージョンをダウンロードできます

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

フェッチするリポジトリが your GitHub Enterprise Server instance に存在する必要があります。また、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 にアクセスするには、パスワードではなく個人アクセストークンで認証する必要があります。 詳細については、個人アクセス トークンの作成に関する記事を参照してください。

権限を確認します

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

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

代わりに SSH を使用する

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

Error: Repository not found

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

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

入力ミスは起こるものです。また、リポジトリ名は大文字と小文字を区別します。 git@<em>ホスト名</em>:user/repo.git をクローンしようとして、リポジトリの実際の名前が User/Repo である場合、このエラーが表示されます。

このエラーを回避するには、クローン時は常にリポジトリのページからクローン URL をコピーして貼り付けるようにします。 詳細については、「リポジトリをクローンする」を参照してください。

既存のリポジトリでリモートを更新するには、「リモート リポジトリを管理する」をご覧ください。

権限をチェックする

プライベートリポジトリをクローンしようとしているが、リポジトリの表示権限がない場合、このエラーが表示されます。

以下のいずれかによってリポジトリへのアクセス権があることを確認してください:

SSH アクセスをチェックする

ごくまれに、リポジトリへの正しい SSH アクセス権がない場合があります。

使用している SSH キーが GitHub Enterprise Server の個人アカウントにアタッチされていることを確認する必要があります。 以下をコマンド ラインに入力することで、これをチェックできます。

$ ssh -T git@ホスト名
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.

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

インスタンスがプライベートモードであるかを確認する

サイト管理者が GitHub Enterprise インスタンスでプライベート モードを有効にしている場合、git:// による匿名のクローンは無効になります。 リポジトリをクローンできない場合は、サイト管理者にお問い合わせください。

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

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

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

このエラーは、リポジトリのデフォルトブランチが your GitHub Enterprise Server instanceで削除された場合に発生します。

このエラーの検出方法は簡単です。リポジトリのクローンを試みると Git により警告されます:

$ git clone https://ホスト名/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.

このエラーを解決するには、your GitHub Enterprise Server instance リポジトリの管理者になる必要があります。 リポジトリの既定のブランチを変更する必要があります。

その後、コマンドラインで使用可能なブランチすべてのリストを取得できます:

$ 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'