コミットした後に「あ、コミットメッセージ間違えた!」と気づいたこと、ありませんか?
タイポしていたり、チケット番号を書き忘れたり、全然違うメッセージを書いてしまったり…。開発現場では日常茶飯事です。
でも安心してください。Gitなら、コミットメッセージは後からでも変更できます。
この記事では、直前のコミットから過去の複数のコミットまで、状況に応じた変更方法を分かりやすく解説していきます。
コミットメッセージを変更できる理由

まず基本的な仕組みから理解しておきましょう。
Gitでは、コミットメッセージはコミット全体の一部として扱われます。メッセージを変更すると、コミットID(SHA-1ハッシュ値)も変わります。
つまり、古いコミットを「編集」するのではなく、新しいコミットで置き換えるという仕組みです。
これがGitでコミット履歴を書き換えられる理由であり、同時に注意が必要な理由でもあります。
方法1:直前のコミットメッセージを変更する(最も簡単)
一番よくあるケースが「今コミットしたばかりのメッセージを直したい」というパターンです。
基本的な変更方法
次のコマンドを実行するだけです。
git commit --amend
このコマンドを実行すると、テキストエディタが開き、現在のコミットメッセージが表示されます。
エディタでの操作手順
- テキストエディタ(Vim、Nano、VS Codeなど)が起動する
- コミットメッセージを修正する
- 保存して閉じる
Vimの場合の操作方法
Gitのデフォルトエディタは多くの場合Vimです。初めての方は戸惑うかもしれませんが、次の手順で操作できます。
iキーを押して入力モードに切り替え- メッセージを編集
Escキーを押してコマンドモードに戻る:wqと入力して Enter(保存して終了)
コマンドラインで直接変更する方法
エディタを開かず、コマンドライン上で直接メッセージを指定することもできます。
git commit --amend -m "修正後のコミットメッセージ"
この方法なら、エディタ操作が不要でより素早く変更できます。
実例:チケット番号を追加する
# 元のコミット
git commit -m "ログイン機能を実装"
# あ、チケット番号を書き忘れた!
git commit --amend -m "refs #123 ログイン機能を実装"
ファイルの変更も一緒に追加できる
git commit --amend は、コミットメッセージだけでなく、ファイルの変更も追加できます。
# 追加し忘れたファイルがあった場合
git add 忘れていたファイル.txt
git commit --amend --no-edit
--no-edit オプションをつけると、コミットメッセージはそのままで、ステージされた変更だけを追加できます。
よくある使用例
- 細かなタイポやフォーマット修正を追加したい
- テストファイルを追加し忘れた
- 複数のファイルを1つのコミットにまとめたい
方法2:過去の特定のコミットメッセージを変更する
直前ではなく、数コミット前のメッセージを変更したい場合は、インタラクティブリベースを使います。
変更したいコミットを特定する
まず、どのコミットを変更するか確認しましょう。
git log --oneline
出力例:
a1b2c3d (HEAD -> main) 最新のコミット
e4f5g6h 2つ前のコミット:これを変更したい
i7j8k9l 3つ前のコミット
m0n1o2p 4つ前のコミット
インタラクティブリベースを開始する
変更したいコミットまでの数を数えて、次のコマンドを実行します。
git rebase -i HEAD~n
n には、変更したいコミットを含む数を指定します。
例えば、2つ前のコミットを変更する場合:
git rebase -i HEAD~3
「なぜ3なのか?」と思うかもしれませんが、リベースは変更したいコミットの1つ前から始まるため、2つ前を変更するには3を指定します。
エディタでの操作
エディタが開くと、次のような表示になります。
pick i7j8k9l 3つ前のコミット
pick e4f5g6h 2つ前のコミット:これを変更したい
pick a1b2c3d 最新のコミット
# Rebase m0n1o2p..a1b2c3d onto m0n1o2p
#
# 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
重要な操作:pickをrewordに変更
変更したいコミットの行の先頭にある pick を reword に書き換えます。
pick i7j8k9l 3つ前のコミット
reword e4f5g6h 2つ前のコミット:これを変更したい
pick a1b2c3d 最新のコミット
保存して閉じると、該当コミットのメッセージ編集画面が開きます。
rewordとeditの違い
リベースには reword と edit という2つの似た機能があります。
reword
- コミットメッセージだけを変更
- ファイルの内容は変更しない
- シンプルで安全
edit
- コミットメッセージもファイルも変更可能
- リベースが一時停止する
git commit --amendで変更後、git rebase --continueで再開
通常、メッセージだけを変更する場合は reword を使います。
複数のコミットメッセージを一度に変更
複数のコミットメッセージを変更したい場合も、同じ手順で可能です。
reword i7j8k9l 3つ前のコミット
pick e4f5g6h 2つ前のコミット
reword a1b2c3d 最新のコミット
複数の reword を指定すると、Gitは順番にそれぞれの編集画面を開いてくれます。
方法3:プッシュ済みのコミットメッセージを変更する

ここまで紹介した方法は、ローカルのみのコミットを変更する場合です。
すでにGitHubやGitLabなどのリモートリポジトリにプッシュ済みの場合は、追加の手順が必要になります。
変更手順
- ローカルで方法1または方法2を使って変更
- フォースプッシュでリモートを上書き
git push --force
または、より安全な方法として:
git push --force-with-lease
–force と –force-with-lease の違い
–force(強制プッシュ)
- 無条件にリモートを上書き
- 他の人の変更も消してしまう可能性がある
–force-with-lease(安全な強制プッシュ)
- リモートが変更されていないかチェック
- 他の人がプッシュしていたら失敗する
- チーム開発では必ずこちらを使うべき
プッシュ済みのコミット変更は慎重に
注意すべき重要なポイント
リモートにプッシュ済みのコミット履歴を書き換えることは、チーム開発では大きな問題を引き起こす可能性があります。
起こりうる問題
- 他のメンバーがすでにそのコミットをプルしている
- マージコンフリクトが発生する
- 履歴の不整合が起きる
基本ルール
- 自分だけのブランチなら変更OK
- 共有ブランチは変更しない
- main/masterブランチは絶対に変更しない
- チームメンバーに事前確認する
もしチームで共有しているブランチのメッセージを変更したい場合は、以下の方法を検討しましょう。
- 新しいコミットで修正を追加(履歴は残る)
- チーム全員に変更を周知してから実施
- そもそも変更しない(重大な問題でなければ放置)
方法4:GitHub/GitLabのWebインターフェースで変更
コマンドラインを使わずに、Web上で変更する方法もあります。
GitHubの場合
Pull Request経由での変更
- Pull Requestページを開く
- 「Commits」タブを表示
- 変更したいコミットの右側にある「…」をクリック
- 「Edit commit message」を選択
- メッセージを編集して保存
ただし、この機能はPull Request内のコミットに限られます。
GitHub Desktopを使う方法
GitHub DesktopというGUIアプリを使うと、より簡単に変更できます。
- GitHub Desktopを開く
- 変更したいコミットを右クリック
- 「Amend Commit」を選択
- メッセージを編集して保存
コマンドライン操作が苦手な方にはおすすめです。
コミットメッセージの書き方のベストプラクティス
せっかく変更方法を覚えたので、最初から良いコミットメッセージを書く習慣も身につけましょう。
良いコミットメッセージの基本ルール
1行目は50文字以内
要約として、簡潔に何をしたかを書きます。
# 良い例
ログイン機能のバリデーションを追加
# 悪い例(長すぎる)
ユーザーがログインするときにメールアドレスとパスワードの形式をチェックするバリデーション機能を実装しました
命令形で書く
「〜した」ではなく「〜する」の形式で書きます。
# 良い例
ユーザー認証機能を追加
# 悪い例
ユーザー認証機能を追加しました
これはGit自体が自動生成するメッセージが命令形だからです(例:「Merge branch ‘main’」)。
「何を」と「なぜ」を書く
# より良い例
ログインフォームのバリデーションを追加
セキュリティ向上のため、クライアント側でも
入力チェックを行うように変更。
サーバー側のバリデーションと重複するが、
ユーザー体験の改善を優先。
プロジェクトの規約に従う
チームやプロジェクトによって、コミットメッセージの書き方には独自のルールがあることも。
一般的なフォーマット:
[type] 要約形式(例:[feat] ログイン機能追加)refs #123でチケット番号を参照fix:feat:などのプレフィックス(Conventional Commits)
トラブルシューティング:よくある問題と解決法
エディタが開かない・操作方法が分からない
Gitのデフォルトエディタは環境によって異なります。使いやすいエディタに変更しましょう。
VS Codeをデフォルトエディタにする
git config --global core.editor "code --wait"
Nanoをデフォルトエディタにする
git config --global core.editor nano
リベース中にエラーが出た
リベースを中止するには:
git rebase --abort
これで元の状態に戻ります。
間違えて変更してしまった
git commit --amend や git rebase を使った後、「やっぱり元に戻したい」という場合。
reflogで元に戻す
# 操作履歴を確認
git reflog
# 元のコミットに戻る
git reset --hard HEAD@{1}
reflogには過去90日分の操作履歴が残っているので、直近の変更なら大抵復元できます。
プッシュ後の変更でチームに影響が出た
もし既にプッシュしたコミットを変更してチームメンバーに影響が出た場合:
チームメンバーへの対応依頼
# ローカルブランチを削除
git branch -D ブランチ名
# リモートから最新を取得し直す
git fetch origin
git checkout ブランチ名
こういった混乱を避けるためにも、プッシュ済みのコミットは極力変更しないのがベストです。
コミットメッセージ変更のタイミング:いつ使うべきか
コミットメッセージを変更できることは分かりましたが、実際にはどんなときに変更すべきでしょうか?
変更すべき場合
明らかな間違いがある
- タイポや誤字脱字
- チケット番号の記入ミス
- 全く別の作業内容を書いてしまった
規約違反を修正する
- チケット番号の記入忘れ
- プレフィックスの付け忘れ
- フォーマットの間違い
セキュリティ上の問題
- パスワードやAPIキーを誤って書いてしまった
- 機密情報が含まれている
変更しない方がいい場合
既に複数人が使っているブランチ
チーム開発では、履歴の一貫性が重要です。些細な間違いなら、そのままにしておく方が安全なこともあります。
内容は正しいが、もっと良い表現にしたい
完璧主義になりすぎる必要はありません。内容が伝わっていれば、多少の表現の差は問題になりません。
古いコミット(数週間~数ヶ月前)
時間が経ったコミットを変更すると、PRのレビュー履歴や議論の文脈が失われる可能性があります。
まとめ:状況に応じた使い分け
Gitのコミットメッセージ変更方法をまとめます。
状況別の使い分け表
| 状況 | 使うコマンド | 難易度 | 注意点 |
|---|---|---|---|
| 直前のコミット(未プッシュ) | git commit --amend | ★☆☆ | 最も安全 |
| 過去のコミット(未プッシュ) | git rebase -i HEAD~n | ★★☆ | rewordを使う |
| 直前のコミット(プッシュ済み) | amend + force push | ★★☆ | 共有ブランチは注意 |
| 過去のコミット(プッシュ済み) | rebase + force push | ★★★ | チームに要確認 |
覚えておきたい重要ポイント
- コミットメッセージ変更は「新しいコミットで置き換える」仕組み
- 直前のコミットは
git commit --amendで簡単に変更 - 過去のコミットは
git rebase -iのインタラクティブリベースを使う - プッシュ済みの場合は
--force-with-leaseで安全にフォースプッシュ - 共有ブランチの履歴書き換えは慎重に、チームメンバーへの影響を考慮
- エディタはVS Codeなど使いやすいものに変更できる
最後に:日頃からの心がけ
コミットメッセージを後から変更する方法を知っておくことは大切ですが、最初から良いメッセージを書く習慣を身につけることが何より重要です。
- コミット前に一度メッセージを見直す
- チームの規約を確認する
- プレフィックスやチケット番号を忘れない
- 分かりやすく簡潔に書く
この記事で紹介した方法を使えば、コミットメッセージの間違いを恐れる必要はありません。でも、最初から丁寧に書く習慣があれば、変更の手間も減らせます。
あなたのGit操作がより快適になることを願っています!


コメント