gitのコミットメッセージを変更する方法は?あとからの修正手順も!(amend:直前のコミット:過去のコミット:注意点など)
Gitで作業していると、誤字を含んだコミットメッセージや、内容を十分に説明できていないメッセージを残してしまうことがあります。
直前のコミットなら比較的簡単に修正できますが、すでに複数のコミットを積み重ねた場合や、リモートリポジトリへpushした後では扱い方が変わります。
この記事では、git commit amendを使った直前の修正から、過去のコミットメッセージを書き換える方法、共同開発で注意したい点まで順番に解説します。
コミットメッセージ変更の基本

それではまずコミットメッセージの変更方法と、作業前に押さえたい結論について解説していきます。
直前のコミットはamendで変更
最後に作成したコミットのメッセージだけを変更したい場合は、git commit –amendコマンドを使います。
この操作では、直前のコミットをいったん作り直す形になるため、コミットメッセージを編集して保存すれば置き換えが完了します。
git commit –amend
エディタが開いたらコミットメッセージを修正し、保存して終了します。
変更内容を追加せずにメッセージだけ直したいときにも使えるため、日常的なGit操作で覚えておきたいコマンドです。
amendは直前のコミットだけが対象であり、二つ前以前のコミットにはそのまま使えません。
未pushなら履歴を書き換えやすい状態
ローカル環境だけに存在するコミットであれば、履歴を書き換えても他の開発者へ影響する可能性は低くなります。
そのため、コミット直後に誤字へ気付いた場合や、チケット番号を付け忘れた場合は、push前に修正しておくと履歴が読みやすくなります。
ただし、自分だけが使うブランチでも、CIや自動処理がコミットIDを参照しているケースには注意が必要です。
コミットメッセージの変更により、同じ内容でも新しいコミットIDが作られる点を理解しておきましょう。
push後は共有状況の確認が重要
リモートリポジトリへpush済みのコミットをamendすると、ローカルとリモートで履歴が一致しなくなります。
修正後の履歴をリモートへ反映するには強制pushが必要になることがあります。
個人ブランチでは実行できる場合が多い一方で、mainやdevelopなどの共有ブランチでは保護ルールによって拒否されることもあります。
共有済みの履歴を書き換える前に、対象ブランチを誰かが取得していないか確認しましょう。
迷う場合は、メッセージを修正するよりも訂正内容を補う新しいコミットを作成する判断が安全です。
直前コミットの修正手順
続いては直前のコミットメッセージを変更する具体的な手順を確認していきます。
エディタを開いて修正する方法
最も基本的な方法は、git commit –amendを実行して設定済みのエディタで文面を変更する方法です。
Git Bash、ターミナル、VS Codeの統合ターミナルなど、利用している環境にかかわらず同じ考え方で進められます。
git log –oneline
git commit –amend
git log –oneline
最初と最後にgit log –onelineを実行すると、対象のコミットメッセージが置き換わったことを確認できます。
エディタの操作に慣れていない場合は、保存方法と終了方法を先に確認しておくと作業が止まりにくいでしょう。
コマンドだけで指定する方法
エディタを起動せず、修正後の文面をコマンドに直接渡したい場合は、mオプションを使います。
git commit –amend -m “fix login validation message”
短い修正であれば便利ですが、複数行の説明や詳細な本文を含めるコミットでは、エディタ上で確認したほうが誤入力を防げます。
コミットメッセージは、変更内容が後から追えることを優先しましょう。
何を変更したのかを動詞から書き始めると、git logを一覧したときにも意味を把握しやすくなります。
変更内容も追加する場合
コミットメッセージの修正と同時に、直前のコミットへファイル変更を追加することも可能です。
まずgit addで追加したい変更をステージングし、その後にgit commit –amendを実行します。
git add README.md
git commit –amend -m “docs update installation guide”
ただし、メッセージだけの修正とファイル内容の修正を同時に行うと、何を直した操作だったのか把握しにくくなることがあります。
レビュー前の小さな調整には向いていますが、大きな変更を混ぜる場合は別コミットに分ける選択も有効です。
過去コミットの変更手順
続いては、直前ではない過去のコミットメッセージを変更する方法を確認していきます。
interactive rebaseの役割
二つ前や数日前のコミットメッセージを変更したい場合は、git rebase -iを使います。
これは過去の履歴を一覧表示し、指定したコミットに対して編集、並べ替え、統合などを行える機能です。
コミットメッセージだけを変更する場合は、一覧内のpickをrewordへ書き換えます。
git rebase -i HEAD~3
変更したい行のpickをrewordに変更して保存します。
HEAD~3は、現在位置から三件分のコミットを対象にする指定です。
変更したいコミットより前まで対象範囲へ含めることが、interactive rebaseを成功させる重要なポイントになります。
rewordによるメッセージ編集
rewordを指定して保存すると、Gitは対象コミットのメッセージ編集画面を順番に開きます。
ここで新しいメッセージを入力して保存すると、ファイル内容を変えずに説明文だけを更新できます。
複数のコミットをrewordにした場合は、対象ごとに編集画面が開くため、コミットの順番を確認しながら進めましょう。
作業後はgit log –onelineやgit logで履歴を確認し、意図したメッセージになっているかを確かめます。
作業中断と復旧の方法
interactive rebaseの途中で不安になった場合は、git rebase –abortを実行すると開始前の状態へ戻せます。
競合が発生した場合は該当ファイルを修正し、git addで解決済みにしたうえでgit rebase –continueを実行します。
過去のコミットを修正する前には、git statusとgit log –onelineで作業ツリーと対象範囲を確認してください。
未コミットの変更が残っている状態では、先にコミットするかstashへ退避すると安全です。
慣れないうちは、練習用ブランチでrebaseの挙動を試してから本番ブランチへ適用する方法がおすすめです。
リモート反映と強制pushの注意点
続いては、変更後の履歴をリモートリポジトリへ反映する際の注意点を確認していきます。
通常pushが失敗する理由
amendやrebaseを行うと、以前のコミットとは別のコミットIDが生成されます。
リモート側には古い履歴が残っているため、通常のgit pushでは履歴が先に進んでいないと判断され、更新を拒否されます。
これは誤って他の人の変更を消さないための保護機能です。
pushの拒否はエラーではなく履歴の不一致を知らせる警告として受け止めると、次の対応を判断しやすくなります。
force-with-leaseの使い分け
自分のブランチで履歴を書き換えた結果を反映する場合は、git push –force-with-leaseが候補になります。
git push –force-with-lease origin feature/login-form
force-with-leaseは、取得時点からリモートブランチが他者によって更新されていないことを確認してから強制更新します。
単純なforceよりも安全性が高いため、履歴を書き換えたブランチを更新する際にはこちらを優先するとよいでしょう。
それでも共有ブランチへの実行は影響が大きいため、チームのルールを必ず確認してください。
共同開発で避けたい操作
複数人が使うmain、master、developなどのブランチで、合意なしに履歴を書き換える操作は避けるべきです。
他のメンバーがすでに古い履歴をpullしていると、作業環境で競合や混乱が起こりやすくなります。
| 状況 | 推奨される対応 | 注意点 |
|---|---|---|
| ローカルのみ | amendまたはrebase | 履歴確認後に作業 |
| 自分だけの作業ブランチ | force-with-leaseで反映 | リモート更新を確認 |
| レビュー中のブランチ | チームへ連絡後に修正 | レビューURLや差分を確認 |
| 共有ブランチ | 新規コミットで訂正 | 履歴改変を原則避ける |
共有済みの履歴を変える必要がある場合は、先に関係者へ通知し、対象ブランチと反映時刻を明確にしましょう。
技術的に可能でも、チーム運用として適切かどうかを優先する姿勢が大切です。
コミットメッセージの書き方
続いては、修正後に役立つコミットメッセージの書き方を確認していきます。
変更内容が伝わる短い要約
コミットメッセージの先頭行には、何をした変更なのかを短く具体的に書きます。
たとえばfix、add、update、removeといった動詞を使うと、履歴を確認する人が変更の種類を把握しやすくなります。
「修正」「対応」のように広すぎる表現だけでは、後から検索したときに内容が分かりにくくなることがあります。
対象となる機能名やファイルの役割を含めることで、短文でも情報量を高められます。
本文に残すべき補足情報
先頭行だけでは背景が伝わらない場合は、空行を挟んで本文へ理由や影響範囲を書きます。
不具合修正なら発生条件、仕様変更なら変更理由、設定変更なら影響する環境を記録すると、将来の調査に役立ちます。
ただし、機密情報、認証情報、個人情報をコミットメッセージへ書かないことも重要です。
Gitの履歴は長期間残る可能性があるため、公開範囲を意識して記述しましょう。
チームで揃える命名ルール
開発チームでは、コミットメッセージの書式を統一すると、履歴の可読性が大きく向上します。
接頭辞、使用言語、チケット番号の置き方、本文の有無などを決めておくと、レビューやリリースノート作成も進めやすくなります。
| 用途 | メッセージ例 | 意図 |
|---|---|---|
| 機能追加 | add user profile settings | 新機能を追加 |
| 不具合修正 | fix token refresh failure | 障害を修正 |
| 文書更新 | docs update api examples | 説明資料を更新 |
| 整理 | refactor payment service | 外部仕様を変えずに改善 |
形式よりも重要なのは、チーム全体で一貫して使い続けることです。
読み手が数か月後の自分であることも意識して、検索しやすく具体的な表現を選びましょう。
コミットメッセージ変更のまとめ
gitのコミットメッセージを変更する方法は、対象が直前か過去か、そしてリモートへpush済みかによって使い分けます。
直前のコミットならgit commit –amend、過去のコミットならgit rebase -iとrewordが基本です。
push前であれば比較的安全に履歴を整えられますが、push後はコミットIDが変わるため、リモート反映時の強制pushに注意が必要になります。
共有ブランチの履歴は安易に書き換えないことが、共同開発でトラブルを防ぐ大切な原則です。
修正する前にgit logとgit statusで状態を確認し、必要に応じてチームへ共有しましょう。
意味の伝わるコミットメッセージを残しておけば、レビュー、障害調査、将来の保守まで円滑に進めやすくなります。