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 remot -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.
リポジトリが Organization に属し、OAuth App によって生成された SSH キーを使用している� �合、OAuth App へのアクセスは Organization のオーナーによって制限されている可能性があります。 詳しい情� �については、「OAuth App のアクセス制限について」を参照してく� さい。
詳細は「GitHub アカウントに新しい GPG キーを追� する」を参照してく� さい。
インスタンスがプライベートモードであるかを確認する
サイト管理者が 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'