開発を進めていると、バグの修正や小さな変更を繰り返すうちにコミットの数が増えてしまいます。これにより、プルリクエストの履歴が読みづらくなってしまうことがあります。そこで、この記事では、git rebase コマンドを使ってコミットを意味のある単位で整理・まとめる方法を紹介します。
注意:
rebaseはコミットの履歴を変更する操作です。共同で作業しているブランチでこの操作を行うと、混乱が生じる可能性があります。したがって、この操作は自分だけのブランチや、チームメンバーとの確認の上で行ってください。
- 対象のブランチ(今いるブランチ)で対話型のrebaseを開始
git rebase -i HEAD~3
HEAD~3というのは、HEADから3つ目のコミットまで編集対象にするという意味。
- テキストエディタで編集
pick ff5b300 add sample1
pick 0ca0ac8 fix typo
pick 1d1a084 add sample2
上から古い順番にコミットが並んでいます。
基本的に一つ古いコミットにまとめることになる。
つまり、下記の場合は、
pick ff5b300 add sample1
squash 0ca0ac8 fix typo
pick 1d1a084 add sample2
ff5b300に0ca0ac8をまとめるということ。
- コミットメッセージの編集
# This is the 1st commit message:
add sample1
# This is the commit message #2:
fix typo
好きな方を残せばいいです。必要ない方は削除またはコメントアウトします。
git log --onelineやgit logで確認
9524e62 (HEAD -> gattai) add sample2
d353f75 add sample1
強制プッシュと-force-with-leaseオプション
git push origin main --force-with-lease
**--force-with-lease**オプションは、他の人が間に合間に新しいコミットをプッシュしていないか確認する安全な方法で強制プッシュを行います。
-
-force-with-leaseは安全に強制プッシュを行うためのオプションです。このオプションは、他の人が新しいコミットをプッシュしていないかを確認し、変更を上書きする際の安全策として使用されます。
具体的には:
- 他の人が新しいコミットをプッシュしていない場合、強制プッシュが正常に動作します。
- 新しいコミットがプッシュされていた場合、
-force-with-leaseオプションはプッシュを中断し、エラーメッセージを表示します。