🌊

git rebaseのやり方の備忘録

2022/11/13に公開

gitを使っているとたまmainブランチの変更を取り込みたい場面等でrebaseが必要になることがある。しかし、reabase自体の頻度があまり高くないうえに、いくつかコマンドを打つ必要もあるためやり方が未だに覚えれない。
ということで備忘録として記事に残す。

前提

以下のような構成でrebaseすることを前提とする

  • main (開発のメインブランチ)
  • feature/#001_funcA(開発用作業ブランチ)

どちらのブランチでもsample.txtというファイルの同じ行に対して変更を入れている状態とする。

手順

feature/#001_funcA(開発用作業ブランチ)にいる状態で以下のコマンドを実行

$ git switch main
$ git pull origin main
$ git switch feature/#001_funcA
$ git rebase main

ここでどちらのブランチでも同じファイルの同じ行に対して変更を入れている場合、コンフリクトが発生する。その場合はコンフリクトの解消作業をする。

VSCodeを使用している場合は、以下のようなマージ用の画面が表示される。

main側の変更を適用する場合はAccept Current Change, feature/#001_funcA側の変更を適用する場合はAccept Incoming Changeを押下する。どちらも適用する場合は手で必要な部分を修正する。

修正後は以下のコマンドを実行。

$ git add sample.txt
$ git rebase --continue

この後、以下のようなメッセージが表示されればrebaseは完了。

Successfully rebased and updated refs/heads/feature/#001_funcA.

後はリモートへpushすれば終わりだが、この時-fのオプションを付けないとpushできないので忘れずに付けて実行する。

$ git push -f origin feature/#001_funcA

Discussion