Skip to main content

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

If you're having trouble cloning a repository, check these common errors.

HTTPS クローニングエラー

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

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

> error: The requested URL returned error: 401 while accessing
> https://hostname/user/repo.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://hostname/user/repo.git/info/refs
> fatal: HTTP request failed
> Error: https://hostname/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 サイトで最新バージョンをダウンロードできます

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

フェッチするリポジトリが GitHub Enterprise Serverインスタンス に存在する必要があります。また、URL では大文字と小文字が区別されます。

コマンドラインを開き、git remote -v と入力して、ローカルリポジトリの URL を見つけることができます。

$ git remote -v
# 既存のリモートを表示する
> 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
# 'origin' リモートの URL を変更する

$ git remote -v
# 新規 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 を使用できます。 For more information, see "About remote repositories."

Error: Repository not found

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

スペルを確認する

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

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

To update the remote on an existing repository, see "Managing remote repositories".

権限をチェックする

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

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

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

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

You should ensure that the SSH key you are using is attached to your personal account on GitHub Enterprise Server. 以下をコマンドラインに入力してこれをチェックできます:

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

For more information, see Adding a new SSH key to your GitHub account.

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

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

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

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

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

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

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

$ git clone https://hostname/user/repo.git
# リポジトリをクローン
> 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 Enterprise Serverインスタンス リポジトリの管理者になる必要があります。 リポジトリのデフォルトブランチの変更が必要となります。

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

$ git branch -a
# すべてのブランチをリスト
>   remotes/origin/awesome
>   remotes/origin/more-work
>   remotes/origin/new-main

その後、新しいブランチにスイッチするだけです:

$ git checkout new-main
# 追跡ブランチを作成してチェックアウト
> Branch new-main set up to track remote branch new-main from origin.
> Switched to a new branch 'new-main'