参考サイト: https://style.biglobe.co.jp/entry/2022/03/22/090000
なぜrebaseを使うか。上のサイトにかいてあるが、コミットログをきれいにするため。
main→branchをマージで行うと、自分のbranchのコミット間に他の人のコミットが紛れ込む。
具体的に何が起こったときにログがきれいだといいのかわからないけど、どうせmainにマージする前には一度main->branchのマージを行うので、mergeではなくrebaseを使ってきれいにする方針を取ろうと思う。
ちなみにGitLabでもrebaseでのマージを推奨しているようだ。 https://docs.gitlab.com/ee/topics/git/git_rebase.html
手順
作業ブランチ: featとする
- ブランチのバックアップを作成する(現在のブランチ: feat)
- git checkout -b feat-back
- mainでfetchする(現在のブランチ: main)
- git fetch origin main
featの分岐点をmainの先頭に移動(現在のブランチ: feat)
- git rebase origin/main
このとき競合を解決できずわけわからなくなったらとっておいたバックアップに戻す
git reset --hard feat-backこれでrebaseをまったくなかったことにできる
mainブランチをfeatブランチにマージ(現在のブランチ: feat)
- git push -f origin feat