次の方法で共有


Git の複製またはプッシュが Azure DevOps リポジトリに失敗したときの問題のトラブルシューティング

この記事では、Azure DevOps リポジトリに Git クローンまたは Git プッシュ関数を実行しようとしたときに発生する可能性がある問題について説明します。

適用対象: Azure DevOps Services、Azure DevOps Server

Azure DevOps リポジトリへの Git クローンまたは Git プッシュの実行中の問題

GitHub でリポジトリを複製またはプッシュしようとすると、プロキシ構成、SSL 証明書、または資格情報キャッシュに関するいくつかの問題により、Git 複製操作が失敗する可能性があります。

トラブルシューティングのチェックリスト

問題の原因を特定するには、次の手順に従います。

  1. 詳細トレースを有効にして、実行している Git コマンドのトレースの詳細レベルを設定します。

  2. 次の変数を順番に設定し、各セット変数に対して Git コマンドを実行して、エラーに関する詳細情報を取得します。

    • GIT_TRACE=1
    • GIT_TRACE_PACKET=1
    • GIT_TRACE_CURL_NO_DATA=1
    • GIT_CURL_VERBOSE=1

これらの変数のトレース セットのレベルは、問題の原因となるエラーに関する次の例のような詳細情報を提供します。

詳細モードでコマンドを実行して、Git クローンエラー情報を作成します。

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 にルート証明書を追加します。

  1. ルート証明書を Base-64 でエンコードされた X.509 (.次の手順に従って CER) ファイルを開きます。

    1. Microsoft Edge ブラウザーを開き、アドレス バーに TFS サーバーの URL ( https://<servername>/tfsなど) を入力します。

    2. アドレス バーで、 アイコンを選択し、[ Connection is secure リンクを選択します。

    3. アイコンを選択して、Certification ウィンドウを開きます。

    4. [ 証明書のパス ] タブで、ルート証明書である左上の証明書を選択します。

      [認定] ウィンドウの [認定パス] タブを選択します。

    5. [証明書の表示] を選択して、ルート証明書Certificate ウィンドウを開きます。

    6. [ Details タブで、[ファイルへのコピー] '... を選択します。

      [認定] ウィンドウで [詳細] タブを選択します。

    7. Certificate エクスポート ウィザードでNextを選択し、Base-64 でエンコードされた X.509 (.CER)エクスポートするファイル形式。

      証明書のエクスポート ウィザードでファイル形式を選択する。

    8. ルート証明書をローカル ディスクに保存します。

  2. 次の手順に従って、Git 証明書ストアのローカル ディレクトリを使用するように Git を構成します。

    1. ローカル ディスクの 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 で表示されないようにフォルダー パスを修正できます。
    2. curl-ca-bundle.crt ファイルをユーザー プロファイル ディレクトリ (C:\Users\<yourname>) にコピーします。 または、 copy "C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt" C:\Users\<yourname> の例のようなコピー コマンドを実行します。

    3. 次のコマンドを実行して、Windows クライアントから証明書ストアのローカル コピーを使用するように Git を構成します。

      git config --global http.sslCAInfo C:/Users/<yourname>/curl-ca-bundle.crt

  3. 次の手順に従って、エクスポートしたルート証明書を Git 証明書ストアのローカル コピーに追加します。

    1. エクスポートしたルート証明書をメモ帳で開き、内容全体をクリップボードにコピーします。

    2. テキスト エディターの C:/Users/<yourname>/curl-ca-bundle.crt パスに移動して、curl-ca-bundle.crt ファイルを開きます。

      ヒント

      unix2dos ツールを使用すると、ファイル内の行終端を \n から \r\n に変更し、メモ帳でファイルを開くことができます。

    3. 最後にルート証明書のエントリを追加し、証明書の内容を curl-ca-bundle.crt ファイルに貼り付けます。

    4. curl-ca-bundle.crt ファイルを保存します。

    5. 複製操作を実行して、SSL エラーが解決されたかどうかを確認します。

原因 3: 認証エラーまたは資格情報キャッシュの問題

アカウント名またはドメイン パスワードが変更された場合、または認証エラーが発生している場合は、認証キャッシュと資格情報キャッシュに問題がある可能性があります。

解決策: Git 資格情報マネージャー (GCM) をリセットする

認証エラーまたは資格情報キャッシュの問題を解決するには、まず、 トラブルシューティング チェックリストに従って エラー情報を取得し、次の手順に従います。

  1. git config --list コマンドを実行し、Git Credentials Manager (GCM) を使用しているかどうかを確認します。 credential.helperがマネージャーに設定されている場合、GCM は使用中です。
  2. 次の手順に従って GCM をリセットします。
    1. git config --global --unset credential.helper コマンドを実行して、GCM の設定を解除します。
    2. git config credential.helper manager コマンドを実行して、GCM を戻します。 または、次の手順に従って、最初に資格情報キャッシュを削除します。
      1. 設定を解除したら、Windows 検索で Credentials Manager を検索し、 Open を選択し、Git リポジトリの資格情報をすべて削除します。
      2. %localappdata%/GitCredentialManager パスに移動し、tenant.cache ファイルを削除します。
      3. git config credential.helper manager コマンドを実行して、GCM を戻します。
  3. 複製操作を実行して、問題が解決されたかどうかを確認します。

注: 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