Gitでcommitを連ねていて、ごちゃごちゃしたのでorigin/mainからの変更を1つのコミットにまとめてみます 方法は2種類
feature-xxxorigin/mainorigin/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するといいです
「一部だけまとめる」「コミット単位でもう少し調整したい」場合はインタラクティブ 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 -fPRはいい感じにしたいですね
PR
このリンクは、アフィリエイトリンクです