ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
記事のバージョン: GitHub.com

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

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

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

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

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

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

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

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

  2. git commit --amend と入力し、Enter を押します。

  3. テキストエディタでコミットメッセージを編集し、コミットを保存します。

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

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

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

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

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

直近にプッシュしたコミットのメッセージ修正

  1. 上記の手順に従って、コミットメッセージを修正します。
  2. push --force コマンドにより、古いコミットをフォースプッシュで上書きします。

    $ git push --force example-branch

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

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

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

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

    $ git rebase -i HEAD~3 # Displays a list of the last 3 commits on the current branch

    The list will look similar to the following:

    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. Replace pick with reword before each commit message you want to change.

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

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

  6. 修正したコミットをフォースプッシュします。

    $ git push --force

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

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

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

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください