📝

プッシュ済みのコミットメッセージを修正したい...

2024/11/27に公開

はじめに

ChatGPT先生に聞いてみました。
Gitで作業を進めていると、コミットメッセージの修正が必要になる場面があります。特にリモートにプッシュ済みの場合、修正方法に注意が必要です。この記事では、git rebaseを用いてプッシュ済みのコミットメッセージを修正する手順を解説します。

今回やってみましたが、git rebase はとても注意が必要でした。
(なるべくやらずに済むように気をつけたいと思いました...)


前提条件

  • 修正対象のコミットがすでにリモートにプッシュ済みであること。
  • チームメンバーが同じブランチで作業している場合、git push --forceの使用には注意が必要です。

手順概要

  1. インタラクティブリベースを開始
  2. 修正対象のコミットを指定
  3. コミットメッセージを修正
  4. リモートに反映

手順詳細

1. インタラクティブリベースを開始

修正したいコミット数を指定して、リベースを開始します。

git rebase -i HEAD~n
  • nは修正対象のコミット数です(例: 3つ前までならHEAD~3)。
  • エディタが開き、対象のコミットリストが表示されます。

2. 修正対象のコミットを指定

対象のコミットを修正するには、該当行のpickrewordに変更します。

例:

pick abc123 初期コミット
reword def456 修正したいコメントのコミット
pick ghi789 次のコミット
  • rewordを指定すると、コミットメッセージを修正できる状態になります。

3. コミットメッセージを修正

指定したコミットのメッセージがviエディタで開きます。以下の手順で編集します。
(viエディタの操作コマンドなどについては...自分も未学習のためここでは割愛)

  1. 編集モードに入る

    • キーボードで i を押して「INSERTモード」に入ります。
    • 画面左下に「INSERT」と表示されます。
  2. コミットメッセージを修正

    • 必要な内容を修正します。
    修正後のコミットメッセージ
    複数行でも問題ありません。
    
  3. 編集を終了する

    • Escキーを押して「INSERTモード」を終了します。
  4. 保存して終了

    • キーボードで以下を入力して保存し、エディタを終了します。
      :wq
      

4. リモートに反映

リベース完了後、リモートリポジトリを更新します。リモートの履歴を書き換えるため、--forceオプションを使用します。

git push --force

注意点

  1. 履歴が上書きされる
    git push --forceは、リモートの履歴を上書きするため、他の開発者に影響を与える可能性があります。特に共有ブランチで使用する場合は、事前にチームメンバーに連絡しましょう。

  2. バックアップを意識
    操作に不安がある場合、git reflogで履歴を確認したり、別ブランチにバックアップを作成すると安心です。

  3. 操作前の確認
    コミットの履歴や変更内容を確認する癖をつけましょう。

    git log --oneline
    git diff origin/<branch>
    

まとめ

git rebaseを使ったコミットメッセージの修正は強力ですが、リモートへの影響を十分理解した上で使う必要があります。小さな練習ブランチで試すなど、失敗を恐れずに挑戦してみてください。


参考

  • Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた - 株式会社グランフェアズ
    https://www.granfairs.com/blog/entry-3159/
    ...めちゃくちゃ丁寧に解説されています。

Discussion