このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2021-06-09. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

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

コミットメッセージに不明確、不正確、または機密情報が含まれている場合、ローカルでメッセージを修正して、GitHub Enterprise Serverに新しいメッセージで新しいコミットをプッシュできます。 また、コミットメッセージを変更して、不足している情報を追加することも可能です。

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

git commit --amend コマンドで、直近のコミットメッセージを変更できます。

Git では、コミットメッセージのテキストはコミットの一部として扱われます。 コミットメッセージを変更すると、コミット ID (コミットの SHA1 チェックサム) も変更されます。 実質的には、古いコミットに代わる新しいコミットを作成することになります。

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

コミットがローカルリポジトリにのみ存在し、GitHub Enterprise Serverのインスタンスにプッシュされていない場合、git commit --amend コマンドでコミットメッセージを修正できます。

  1. コマンドラインで、修正したいコミットのあるリポジトリに移動します。
  2. git commit --amend と入力し、Enter を押します。
  3. テキストエディタでコミットメッセージを編集し、コミットを保存します。

次回のプッシュ時に、GitHub Enterprise Serverのインスタンスに新たなコミットとメッセージが表示されます。

Git で使うデフォルトのテキストエディタは、core.editor の設定で変更できます。 詳しい情報については、Git のマニュアルにある「基本クライアント設定」を参照してください。

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

すでにコミットを GitHub Enterprise Serverのインスタンスにプッシュしている場合、修正済みのメッセージでコミットをフォースプッシュする必要があります。

リポジトリの履歴が変更されるため、フォースプッシュは推奨されません。 フォースプッシュを行った場合、リポジトリをすでにクローンした人はローカルの履歴を手動で修正する必要があります。 詳しい情報については、Git のマニュアルにある「上流リベースからのリカバリ」を参照してください。

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

  1. 上記の手順に従って、コミットメッセージを修正します。
  2. Use the push --force-with-lease command to force push over the old commit.
    $ git push --force-with-lease example-branch

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

複数のコミットまたは古いコミットの、メッセージを修正する必要がある場合は、インタラクティブなリベースを利用した後にフォースプッシュして、コミットの履歴を変更できます。

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

  2. git rebase -i HEAD~n コマンドで、デフォルトのテキストエディタに直近 n コミットの一覧を表示できます。

    # 現在のブランチの最後の 3 つのコミットのリストを表示する
    $ git rebase -i HEAD~3

    リストは、以下のようになります。

    pick e499d89 Delete CNAME
    pick 0c39034 Better README
    pick f7fde4a Change the commit message but push the same commit.
    
    # Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
    #
    # Commands:
    # p, pick = use commit
    # r, reword = use commit, but edit the commit message
    # e, edit = use commit, but stop for amending
    # s, squash = use commit, but meld into previous commit
    # f, fixup = like "squash", but discard this commit's log message
    # x, exec = run command (the rest of the line) using shell
    #
    # These lines can be re-ordered; they are executed from top to bottom.
    #
    # If you remove a line here THAT COMMIT WILL BE LOST.
    #
    # However, if you remove everything, the rebase will be aborted.
    #
    # Note that empty commits are commented out
  3. 変更する各コミットメッセージの前の pickreword に置き換えます。

    pick e499d89 Delete CNAME
    reword 0c39034 Better README
    reword f7fde4a Change the commit message but push the same commit.
  4. コミット一覧のファイルを保存して閉じます。

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

  6. 変更を GitHub にプッシュする準備ができたら、push --force コマンドを使用して、古いコミットを強制的にプッシュします。

    $ git push --force example-branch

インタラクティブリベースに関する詳しい情報については、Git のマニュアルにある「インタラクティブモード」を参照してください。

この方法でも、コミットメッセージを修正すると、ID が新しい新たなコミットメッセージが作成されます。 ただしこの方法では、修正したコミットに続く各コミットも新しい ID を取得します。各コミットには、親の ID が含まれているためです。

修正したコミットをフォースプッシュしても元のコミットは GitHub Enterprise Serverから削除されない場合がありますので、元のコミットメッセージに機密情報が含まれている場合は注意してください。 古いコミットは、以降のクローンには含まれませんが、GitHub Enterprise Serverにキャッシュされ、コミット ID でアクセスできます。 リモートリポジトリから古いコミットメッセージをパージするには、古いコミット ID を添えて サイト管理者にお問い合わせください。

参考リンク

問題がまだ解決していませんか?

GitHubコミュニティで質問するサポートへの連絡