テック技報最新号へ →
コード

Git: commit --fixup + rebase --autosquash で修正を正しいコミットに自動で混ぜる

過去のコミットへの追加修正を git commit --fixup=<sha> で作っておき、git rebase -i --autosquash すると、修正コミットが対象コミットの直後に自動で並び、squash される。

@kinamocchi_tech · 投稿 2026-09-15
#git#rebase#履歴整理

どんな時に使う?

  • PRレビューで「3つ前のコミットの typo を直して」と言われたとき
  • 履歴をきれいに保ちたいが、rebase -i で手作業の並べ替えをしたくないとき

手順

bash
# 修正をステージしてから、対象コミットを指定して fixup コミットを作る
git add -p
git commit --fixup=abc1234

# ベースから autosquash 付きで rebase(エディタは並び済みなので保存するだけ)
git rebase -i --autosquash main
  • 毎回付けるのが面倒なら: git config --global rebase.autoSquash true
  • メッセージも直したいときは --fixup=reword:<sha>、内容とメッセージ両方なら --fixup=amend:<sha>(Git 2.32+)

新しい選択肢: git history fixup / git history reword

  • 最近の Git には、rebase を使わずに過去のコミットへ修正を混ぜる git history fixup <commit>、メッセージだけを直す git history reword <commit> が入った(@zaru · 2026-06-30)。
  • 新しい(実験的な扱いの)コマンドなので、手元の Git で git history -h が使えるか確認してから使う。

注意点

  • 履歴を書き換えるので、push済みの共有ブランチでは force push が必要になる。自分専用のPRブランチで使う(git push --force-with-lease 推奨)。

出典

X の元の投稿を開く