この記事では、Azure DevOps リポジトリに Git クローンまたは Git プッシュ関数を実行しようとしたときに発生する可能性がある問題について説明します。
適用対象: Azure DevOps Services、Azure DevOps Server
Azure DevOps リポジトリへの Git クローンまたは Git プッシュの実行中の問題
GitHub でリポジトリを複製またはプッシュしようとすると、プロキシ構成、SSL 証明書、または資格情報キャッシュに関するいくつかの問題により、Git 複製操作が失敗する可能性があります。
トラブルシューティングのチェックリスト
問題の原因を特定するには、次の手順に従います。
詳細トレースを有効にして、実行している Git コマンドのトレースの詳細レベルを設定します。
次の変数を順番に設定し、各セット変数に対して Git コマンドを実行して、エラーに関する詳細情報を取得します。
GIT_TRACE=1
GIT_TRACE_PACKET=1
GIT_TRACE_CURL_NO_DATA=1
GIT_CURL_VERBOSE=1
これらの変数のトレース セットのレベルは、問題の原因となるエラーに関する次の例のような詳細情報を提供します。
Git 環境変数の詳細については、「 Git Internals - 環境変数を参照してください。
原因 1: Git がプロキシ サーバー経由で接続できない
プロキシ サーバーを使用しているが、Git 構成がプロキシ サーバー経由で接続するように設定されていない場合は、407 または 502 のエラー メッセージが表示されることがあります。 この問題は、プロキシ サーバー経由で接続を確立できず、"<your github url
> にアクセスできません:" または "ホスト github.com
を解決できませんでした" のようなエラーが表示される場合にも発生します。
解決策: プロキシ サーバーを使用するように Git を構成する
git config --list
を実行して、システム上のすべての Git 構成の一覧を取得し、プロキシ サーバーが使用中かどうかを確認します。
リポジトリやシステム ルートなどの複数の構成ファイルが表示される場合は、 git config --list --show-origin
コマンドを実行し、Git が構成情報を取得するパスを確認します。
構成の一覧にプロキシ サーバーが見つからない場合は、 git config --global
コマンドを実行して、構成でプロキシ サーバーを設定します。
たとえば、http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
のようにします。
一部の URL に特定のプロキシを使用するには、Git 構成サブセクションのプロキシ URL を次の例のように http.<url\>.key notation:
構成します。
git config --global
http.https://domain.com.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
プロキシが https
を使用している場合は、上記の例で https
プロキシ URL を使用して Git 構成を設定します。 それ以外の場合は、 http
を維持します。
Git 構成の詳細については、 Git Config のドキュメントを参照してください。
原因 2: Git がローカルの自己署名証明書を使用する
Git でローカル自己署名証明書を使用している場合は、"SSL 証明書の問題: ローカルの発行者の証明書を取得できません" というエラーが表示されることがあります。
解決策 1: TLS/SSL 検証を無効にする
ローカルの Team Foundation Server (TFS) をインストールし、Git が実行する TLS/SSL 検証を無効にする場合は、次のコマンドを実行します。
git config --global http.sslVerify false
解決策 2: Git で自己署名証明書を構成する
Git が行う TLS/SSL 検証を続行する場合は、次の手順に従ってローカル Git にルート証明書を追加します。
ルート証明書を Base-64 でエンコードされた X.509 (.次の手順に従って CER) ファイルを開きます。
Microsoft Edge ブラウザーを開き、アドレス バーに TFS サーバーの URL (
https://<servername>/tfs
など) を入力します。アドレス バーで、
アイコンを選択し、[ Connection is secure リンクを選択します。
アイコンを選択して、Certification ウィンドウを開きます。
[ 証明書のパス ] タブで、ルート証明書である左上の証明書を選択します。
[証明書の表示] を選択して、ルート証明書Certificate ウィンドウを開きます。
[ Details タブで、[ファイルへのコピー] '... を選択します。
Certificate エクスポート ウィザードでNextを選択し、Base-64 でエンコードされた X.509 (.CER)エクスポートするファイル形式。
ルート証明書をローカル ディスクに保存します。
次の手順に従って、Git 証明書ストアのローカル ディレクトリを使用するように Git を構成します。
ローカル ディスクの C:\Program Files\Git\bin パスに移動し、 curl-ca-bundle.crt ファイルのコピーを作成します。
Note
- デバイスに Git for Windows (
msysgit
) をインストールすると、 curl-ca-bundle.crt ファイルが Program Files ディレクトリに格納されます。 このファイルは、Git が信頼するすべての証明書を含むgit.exeのルート証明書ストアです。 - デバイスごとに格納される curl-ca-bundle.crt ファイルは、ローカルの Windows クライアントに対してプライベートです。 テキスト ファイルには UNIX (
\n
) 行終端があります。 - Git for Windows 2.x シリーズでは、パスは C:\Program Files (x86)\Git\mingw32\ssl\certs\ca-bundle.crt または C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt に変わります。 32 ビット Windows クライアントを使用している場合は、Program Files パーツが x86 で表示されないようにフォルダー パスを修正できます。
- デバイスに Git for Windows (
curl-ca-bundle.crt ファイルをユーザー プロファイル ディレクトリ (C:\Users\<yourname>) にコピーします。 または、
copy "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt" C:\Users\<yourname>
の例のようなコピー コマンドを実行します。次のコマンドを実行して、Windows クライアントから証明書ストアのローカル コピーを使用するように Git を構成します。
git config --global http.sslCAInfo C:/Users/<yourname>/curl-ca-bundle.crt
次の手順に従って、エクスポートしたルート証明書を Git 証明書ストアのローカル コピーに追加します。
エクスポートしたルート証明書をメモ帳で開き、内容全体をクリップボードにコピーします。
テキスト エディターの C:/Users/<yourname>/curl-ca-bundle.crt パスに移動して、curl-ca-bundle.crt ファイルを開きます。
ヒント
unix2dos ツールを使用すると、ファイル内の行終端を \n から \r\n に変更し、メモ帳でファイルを開くことができます。
最後にルート証明書のエントリを追加し、証明書の内容を curl-ca-bundle.crt ファイルに貼り付けます。
curl-ca-bundle.crt ファイルを保存します。
複製操作を実行して、SSL エラーが解決されたかどうかを確認します。
原因 3: 認証エラーまたは資格情報キャッシュの問題
アカウント名またはドメイン パスワードが変更された場合、または認証エラーが発生している場合は、認証キャッシュと資格情報キャッシュに問題がある可能性があります。
解決策: Git 資格情報マネージャー (GCM) をリセットする
認証エラーまたは資格情報キャッシュの問題を解決するには、まず、 トラブルシューティング チェックリストに従って エラー情報を取得し、次の手順に従います。
git config --list
コマンドを実行し、Git Credentials Manager (GCM) を使用しているかどうかを確認します。credential.helper
がマネージャーに設定されている場合、GCM は使用中です。- 次の手順に従って GCM をリセットします。
git config --global --unset credential.helper
コマンドを実行して、GCM の設定を解除します。git config credential.helper manager
コマンドを実行して、GCM を戻します。 または、次の手順に従って、最初に資格情報キャッシュを削除します。- 設定を解除したら、Windows 検索で Credentials Manager を検索し、 Open を選択し、Git リポジトリの資格情報をすべて削除します。
- %localappdata%/GitCredentialManager パスに移動し、tenant.cache ファイルを削除します。
git config credential.helper manager
コマンドを実行して、GCM を戻します。
- 複製操作を実行して、問題が解決されたかどうかを確認します。
注: Windows 用 Git のバージョンによって、 credential.helper
の値は異なります。 詳しくは、以下の表をご覧ください。
Windows 用 Git のバージョン | Git Credential Manager for Windows | Git Credential Manager Core | Git Credential Manager (GCM Core から名前が変更されました) |
---|---|---|---|
2.27 以前 | manager |
||
2.28 から 2.33.0 | manager (任意) |
manager-core (省略可能) |
|
2.33.1 から 2.34.0 | manager-core |
||
2.34.1 から 2.38 | manager-core |
||
2.39 以降 | manager |