freks blog

about

Gitでorigin/mainまでの変更を1つにする

created: 2026-01-21
おすすめ記事: 出会ってよかったプログラマー本

Gitでcommitを連ねていて、ごちゃごちゃしたのでorigin/mainからの変更を1つのコミットにまとめてみます 方法は2種類

前提

  • 作業ブランチ: feature-xxx
  • ベースブランチ: origin/main

方法1: reset --soft で全部まとめる

origin/main からの差分を全部1コミットにしたいとき

# 念のため最新を取る
git fetch origin

# origin/main の位置まで巻き戻しつつ、差分は全部ステージングに残す
git reset --soft origin/main

# 差分を1コミットにする
git commit -m "feat: XXXを実装"

# 履歴を書き換えるので force-with-lease で push
# force pushしてよければ、-f でpush
git push origin feature-xxx --force-with-lease

もし、force pushしたくなければ、別のブランチに切り替えてpushするといいです

方法2: rebase -iで柔軟にまとめる

「一部だけまとめる」「コミット単位でもう少し調整したい」場合はインタラクティブ rebase。

# origin/main からの差分コミットを並べて編集
git fetch origin
git rebase -i origin/main

エディタが開いたら、例えば最初はこんな感じ:

pick abc1234 最初のコミット
pick def5678 2 個目
pick 9999999 3 個目

これをこう書き換える

pick abc1234 最初のコミット
s def5678 2 個目
s 9999999 3 個目
pick そのまま残す

squash / s: 直前のコミットに統合、メッセージも統合
fixup / f: 直前のコミットに統合、メッセージは捨て

保存して閉じると、コミットメッセージ編集画面が出るので、最終的な 1 コミット分のメッセージを書く

最後に push

git push origin feature-xxx --force-with-lease

もし、force push してよければ

git push origin feature-xxx -f

まとめ

PRはいい感じにしたいですね


PR


Amazonのアソシエイトとして、blog.freks.jp は適格販売により収入を得ています。
This site is managed by freks