より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

いい加減rebaseを理解する

毎回、あれどうやったっけなというのがGitのRebaseです。

きちんと記事を書いて整理しようと思います。書いて覚える。昔からの私の勉強法であります。

まず、適当なリポジトリを用意します。

github.com

  1. mainブランチから別でfeatureブランチを作成
  2. featureブランチで修正して一つコミット
  3. mainブランチに戻り、一つコミット

f:id:rimever:20210413210029p:plain

これでfeatureブランチを切った時からmainブランチが進んでいるという状態が出来ます。

mainブランチから離れたままでいると競合する可能性が高くなり、後でマージするのが大変になります。

なのでrebaseして、最新のmainブランチから切られたブランチでいるようにするのです。

競合したとしてもあらかじめ競合を解決されていれば競合の解決もレビューしてもらえるので安心なわけです。

リベースですが、ブランチをチェックアウトした状態で、リベースしたいブランチ名を右クリックとかいうとよくわからないですね。

基本的にfeatureブランチをチェックアウトした状態で、main/developブランチを右クリックして現在の修正を〜に対してリベースするを選びます(とりあえずこれで操作に慣れれば細かいことはわかるようになる、多分)

f:id:rimever:20210413212737p:plain

競合を解決します。Visual Studio 2019だと楽です。

ツールはお好みで。

f:id:rimever:20210413211134p:plain

競合を解決したら、ファイルを右クリックして競合を解決するを選びます。

f:id:rimever:20210413211718p:plain

もし、競合がよくわからなくなってリベースをやめたくなったら、リベースを中断を選択します。

競合を解決したらリベースを続けるを選択します。

f:id:rimever:20210413211457p:plain

f:id:rimever:20210413211835p:plain

そして、プッシュします。正直、この状態もよくわからないので自分、大丈夫かと思うのですが、大丈夫です。

f:id:rimever:20210413212242p:plain

で失敗するんですよ、これが。

そこでターミナルから

git push origin ブランチ名 -f

と強制プッシュします。ちなみに、--force-with-lease という方法もあるようです。

f:id:rimever:20210413212533p:plain

これで解決します。

おまけ〜Visual Studioの場合

f:id:rimever:20210413210755p:plain

参考記事

qiita.com