# コミットメッセージの変更

不明、正しくない、または機密性の高いコミット メッセージをローカルで修正し、更新されたコミットを GitHubにプッシュします (最近または古いコミットを編集する手順を含む)。

## 直近のコミットメッセージの書き換え

コミット メッセージを変更すると、新しいコミット ID が作成されます。 コミットが既にプッシュされている場合は、書き換えられた履歴を強制的にプッシュする必要があります。

## オンラインにプッシュされていないコミット

コミットがローカル リポジトリにのみ存在する場合は、コミット メッセージをローカルで修正します。

1. コマンドラインで、修正したいコミットのあるリポジトリに移動します。

2. 「`git commit --amend`」と入力して **Enter** キーを押します。

3. テキストエディタでコミットメッセージを編集し、コミットを保存します。
   * 共同作成者を追加するには、コミットにトレーラーを追加します。 「[複数の作成者または組織に代わってコミットを作成する](/ja/enterprise-cloud@latest/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors)」を参照してください。

   * 組織に代わってコミットを作成するには、コミットにトレーラーを追加します。 「[複数の作成者または組織に代わってコミットを作成する](/ja/enterprise-cloud@latest/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors#creating-a-commit-on-behalf-of-an-organization)」を参照してください。

4. コミットを GitHub.comにプッシュします。

## 古いまたは複数のコミットメッセージの修正

コミットを既にプッシュしている場合は、履歴を書き直す前に注意してください。 強制的にプッシュすると、古いコミットに基づいて作業しているコラボレーターが中断される可能性があります。

### 最近プッシュされたコミットのメッセージを変更する

1. コミット メッセージを修正するには、「 [コミットがオンラインにプッシュされていません](#commit-has-not-been-pushed-online) 」の手順に従います。
2. 古いコミットに上書きするよう強制プッシュします。

   ```shell
   git push --force-with-lease origin EXAMPLE-BRANCH
   ```

### 古いまたは複数のコミット メッセージのメッセージを変更する

対話型のリベースを使用して、古いコミット メッセージまたは複数のコミット メッセージを変更します。

1. コマンド ラインで、修正するコミットを含むリポジトリに移動します。

2. 最後の `n` コミットの対話型リベースを開始します。

   ```shell
   git rebase -i HEAD~n
   ```

3. コミットの一覧で、変更する各コミット メッセージの前に `pick` を `reword` に置き換えます。

   ```shell
   pick e499d89 Delete CNAME
   reword 0c39034 Better README
   reword f7fde4a Change the commit message
   ```

4. コミット一覧のファイルを保存して閉じます。

5. 開いた各コミット メッセージ ファイルで、新しいメッセージを入力し、ファイルを保存して閉じます。

6. 書き換えられた履歴を強制プッシュする。

   ```shell
   git push --force-with-lease origin EXAMPLE-BRANCH
   ```

Git マニュアルの [対話型モード](https://git-scm.com/docs/git-rebase#_interactive_mode) を参照してください。

> \[!WARNING]
> コミット メッセージに機密情報が含まれている場合、修正されたコミットを強制的にプッシュしても、元のコミットが GitHubから削除されない可能性があります。 リモート リポジトリから消去するには、古いコミット ID を持つ [GitHub サポート ポータル](https://support.github.com) に問い合わせてください。

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

* [コミットに署名する](/ja/enterprise-cloud@latest/authentication/managing-commit-signature-verification/signing-commits)