# コミットのトラブルシューティング

正しくないユーザー リンク、ローカル コミットの欠落、プッシュ保護ブロックなどの一般的なコミットの問題を解決します。

## コミットが間違ったユーザーにリンクされている

GitHub コミット ヘッダー内の電子メール アドレスを、 GitHub アカウントの電子メール アドレスと照合して、コミットをユーザーにリンクします。 コミットが間違ったユーザーにリンクされている場合、またはユーザーがいない場合は、Git の電子メール設定を更新し、メール アドレスをアカウントに追加します。

> \[!NOTE]
> コミットが別のユーザーにリンクされている場合、リポジトリへのアクセスは許可されません。

### コミットは別のユーザにリンクされています

1. [コミットメールアドレスを設定する](/ja/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git) に従って、ローカル Git 構成のメール アドレスを変更します。 複数のマシンで作業する場合は、それぞれでこの設定を変更します。
2. [GitHub アカウントへのメール アドレスの追加](/ja/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/adding-an-email-address-to-your-github-account) に従って、アカウントにメール アドレスを追加します。

メール アドレスを使用する今後のコミットは、アカウントにリンクされます。

### コミットはどのユーザにもリンクされていません

コミットがリンクされていない理由を確認するには、 GitHubのコミットを調べます。

1. GitHub で、リポジトリのメイン ページに移動します。
2. リポジトリのメイン ページで、ファイル リストの上にある **\[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-history" aria-label="history" role="img"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg> commits]** をクリックします。

   ![リポジトリのメイン ページのスクリーンショット。 時計のアイコンと \[178 件のコミット\] がオレンジ色の枠線で強調表示されています。](/assets/images/help/commits/commits-page.png)
3. 特定のコミットに移動するには、そのコミットのコミット メッセージを選びます。

   ![リポジトリのコミット一覧にあるコミットのスクリーンショット。 \[README.md の更新\] がオレンジ色の枠線で強調表示されています。](/assets/images/help/commits/commit-message-link.png)
4. ユーザー名の右側にある青い <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-question" aria-label="Question mark" role="img"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.756 2.756 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6.24 6.24 0 0 0-.26.16.952.952 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661.103-.067.207-.132.313-.195l.007-.004c.1-.061.182-.11.258-.161a.969.969 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.612.612 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1.01 1.01 0 0 0-.34.398ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> にカーソルを合わせます。
5. メッセージを使用して、更新する内容を決定します。
   * **認識できない作成者 (電子メール アドレス付き):** 表示されたメール アドレスを GitHub アカウントに追加します。
   * **認識できない作成者 (電子メール アドレスなし):** Git でコミット電子メール アドレスを設定し、そのアドレスを GitHub アカウントに追加します。
   * **無効な電子メール:** Git で有効なコミット電子メール アドレスを設定し、そのアドレスを GitHub アカウントに追加します。

メール設定を更新した後、古いコミットがリンクされない場合があります。 「[コミットメールアドレスを設定する](/ja/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address)」を参照してください。

## コミットはGitHubに存在しますが、ローカルクローンには存在しません

`git show COMMIT-SHA`がローカルでエラーを返すが、コミットがGitHubに表示されている場合、ローカルクローンが古くなっているか、コミットがブランチによって参照されなくなる可能性があります。

### ローカルのリポジトリが古い

リモート リポジトリから情報をフェッチします。

```shell
git fetch REMOTE
```

フォークのアップストリーム リポジトリに `git fetch upstream` を使用するか、複製したリポジトリの `git fetch origin` を使用します。

### コミットのあるブランチが削除された

ブランチが削除されたか、強制的にプッシュされた場合は、コミットをローカルにまだ持っているコラボレーターに新しいブランチにプッシュするよう依頼します。

```shell
git branch recover-B B
git push upstream B:recover-B
```

次に、復旧したブランチをフェッチします。

```shell
git fetch upstream recover-B
```

### フォースプッシュは避けましょう

特に複数のユーザーがリポジトリにプッシュできる場合は、必要でない限り強制的にプッシュしないようにします。 書き換えを強制的にプッシュすると、リポジトリの履歴が作成され、コラボレーターが中断されたり、pull request が破損したりする可能性があります。

## プッシュ保護によってコミットがブロックされる

プッシュ保護は、サポートされているシークレットを含むコミット、アップロード、または API 要求をブロックします。

### プッシュ保護によってコミットが禁止された理由を理解する

プッシュ保護によって作業がブロック GitHub 、コミットまたは要求でサポートされているシークレットが検出されました。 もう一度試す前にシークレットを削除します。

### プッシュ保護によるブロックを解決する

1. プッシュ保護メッセージを確認して、シークレットとその表示場所を特定します。
2. コミット、ファイルのアップロード、または API 要求からシークレットを削除します。
3. プッシュ、コミット、アップロード、または要求をもう一度試します。
4. シークレットが安全にプッシュできる場合は、ワークフローのバイパス手順に従います。
   * [コマンド ラインからのプッシュ保護を操作する](/ja/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-on-the-command-line)
   * [GitHub UI でプッシュ保護を操作する](/ja/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-in-the-github-ui)
   * [REST API からのプッシュ保護を操作する](/ja/enterprise-server@3.22/code-security/concepts/secret-security/push-protection-from-the-rest-api)

## 詳細については、次を参照してください。

* [コミットを検索する](/ja/enterprise-server@3.22/search-github/searching-on-github/searching-commits)
* [プッシュプロテクション](/ja/enterprise-server@3.22/code-security/concepts/secret-security/push-protection)
* [サポートされているシークレット スキャン パターン](/ja/enterprise-server@3.22/code-security/reference/secret-security/supported-secret-scanning-patterns)