📝
プッシュ済みのコミットメッセージを修正したい...
はじめに
ChatGPT先生に聞いてみました。
Gitで作業を進めていると、コミットメッセージの修正が必要になる場面があります。特にリモートにプッシュ済みの場合、修正方法に注意が必要です。この記事では、git rebase
を用いてプッシュ済みのコミットメッセージを修正する手順を解説します。
今回やってみましたが、git rebase
はとても注意が必要でした。
(なるべくやらずに済むように気をつけたいと思いました...)
前提条件
- 修正対象のコミットがすでにリモートにプッシュ済みであること。
- チームメンバーが同じブランチで作業している場合、
git push --force
の使用には注意が必要です。
手順概要
- インタラクティブリベースを開始
- 修正対象のコミットを指定
- コミットメッセージを修正
- リモートに反映
手順詳細
1. インタラクティブリベースを開始
修正したいコミット数を指定して、リベースを開始します。
git rebase -i HEAD~n
-
n
は修正対象のコミット数です(例: 3つ前までならHEAD~3
)。 - エディタが開き、対象のコミットリストが表示されます。
2. 修正対象のコミットを指定
対象のコミットを修正するには、該当行のpick
をreword
に変更します。
例:
pick abc123 初期コミット
reword def456 修正したいコメントのコミット
pick ghi789 次のコミット
-
reword
を指定すると、コミットメッセージを修正できる状態になります。
3. コミットメッセージを修正
指定したコミットのメッセージがvi
エディタで開きます。以下の手順で編集します。
(viエディタの操作コマンドなどについては...自分も未学習のためここでは割愛)
-
編集モードに入る
- キーボードで
i
を押して「INSERTモード」に入ります。 - 画面左下に「INSERT」と表示されます。
- キーボードで
-
コミットメッセージを修正
- 必要な内容を修正します。
修正後のコミットメッセージ 複数行でも問題ありません。
-
編集を終了する
-
Esc
キーを押して「INSERTモード」を終了します。
-
-
保存して終了
- キーボードで以下を入力して保存し、エディタを終了します。
:wq
- キーボードで以下を入力して保存し、エディタを終了します。
4. リモートに反映
リベース完了後、リモートリポジトリを更新します。リモートの履歴を書き換えるため、--force
オプションを使用します。
git push --force
注意点
-
履歴が上書きされる
git push --force
は、リモートの履歴を上書きするため、他の開発者に影響を与える可能性があります。特に共有ブランチで使用する場合は、事前にチームメンバーに連絡しましょう。 -
バックアップを意識
操作に不安がある場合、git reflog
で履歴を確認したり、別ブランチにバックアップを作成すると安心です。 -
操作前の確認
コミットの履歴や変更内容を確認する癖をつけましょう。git log --oneline git diff origin/<branch>
まとめ
git rebase
を使ったコミットメッセージの修正は強力ですが、リモートへの影響を十分理解した上で使う必要があります。小さな練習ブランチで試すなど、失敗を恐れずに挑戦してみてください。
参考
- Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた - 株式会社グランフェアズ
https://www.granfairs.com/blog/entry-3159/
...めちゃくちゃ丁寧に解説されています。
Discussion