私の外部記憶装置

ただの覚え書きです。ちょこちょこ見直して加筆・修正していますが、間違ってるかも😅

【Git】プッシュ前にコミットを1つにまとめる(squash)

注意

🚨公開リポジトリにプッシュしたコミットを、後からリベースしてはダメ。(他の人がプルする前ならOKかも)
コマンドラインで Git リベースを使う > リベースされたコードを GitHub にプッシュする - GitHub Docs

手順

  1. git rebase -i コミットID(編集したい範囲より1個古いコミット ID を指定する)
  2. エディタが開いて、コマンド コミットID コミットメッセージが古い順に並ぶので、以下のように「コマンド」部分の書換え等を行う。
    1. まとめたい範囲で、一番古いコミットはpickのまま、他のpicksquash又はsに変更。
      :2,終了行番号s/pick/s/gvim の「複数行内検索と一括置換」:開始行番号,終了行番号s/検索文字/置換文字/g
    2. 保存終了(:wq
  3. コミットメッセージが古い順に並んだエディタが開くので、そのまま保存終了(:wq)。 (ここで変更する方法もあると思うが、よく分かってない)
  4. 後から(プッシュ前)、コミットメッセージを編集したくなったら、
    git commit --amendで編集し、保存終了(:wq)。

参考

コマンドラインで Git リベースを使う - GitHub Docs
コミットメッセージの変更 - GitHub Docs