にわかプラス

にわかが玄人になることを夢見るサイトです。社会や国際のトレンド、プログラミングや電子工作のことについて勉強していきたいです。

Git rebaseを使ってmainの変更を取り込む

sponsor

参考サイト: https://style.biglobe.co.jp/entry/2022/03/22/090000

style.biglobe.co.jp

なぜrebaseを使うか。上のサイトにかいてあるが、コミットログをきれいにするため。

main→branchをマージで行うと、自分のbranchのコミット間に他の人のコミットが紛れ込む。

具体的に何が起こったときにログがきれいだといいのかわからないけど、どうせmainにマージする前には一度main->branchのマージを行うので、mergeではなくrebaseを使ってきれいにする方針を取ろうと思う。

ちなみにGitLabでもrebaseでのマージを推奨しているようだ。 https://docs.gitlab.com/ee/topics/git/git_rebase.html

手順

作業ブランチ: featとする

  1. ブランチのバックアップを作成する(現在のブランチ: feat)
    • git checkout -b feat-back
  2. mainでfetchする(現在のブランチ: main)
    • git fetch origin main
  3. featの分岐点をmainの先頭に移動(現在のブランチ: feat)

    • git rebase origin/main

    このとき競合を解決できずわけわからなくなったらとっておいたバックアップに戻す
    git reset --hard feat-back

    これでrebaseをまったくなかったことにできる

  4. mainブランチをfeatブランチにマージ(現在のブランチ: feat)

    • git push -f origin feat