git pull --rebase でリモートリポジトリの更新を取り込む


はじめに

本稿は執筆者の備忘録です。
記述内容に誤りなどありましたら、教えていただけると幸いです。
また、末尾に参考サイトのリンクを貼り付けています。
より詳しい解説となっておりますので、ぜひそちらもご覧ください。

メインブランチは更新される

最近はチーム開発に関わるようになり、個人学習よりも本格的にgitを使うようになりました。
自分に振られたIssueをこなすので精一杯なのですが、如何せん時間がかかります。

ようやく動作確認までして、いざpush!、、と思いきや、コンフリクトしているようです。
何やら数日前に大きく改修したらしく自分がブランチを切った際のメインブランチが古くなっていたということらしい。

なんか、自分の仕事が遅いような気がしてちょっと切なくなります。
が、しかしこれはチーム開発である以上避けては通れない道ですよね。

メインブランチの更新を取り込む

作業ブランチで更新されたメインブランチを取り込むには、

git pull origin {mainブランチ名}

とすればOKです。

また、pullコマンドはfetch(リモートのブランチからデータを取ってくる)merge(データを取り込む)をした場合と同義です。
ですので、

git fetch
git merge origin/main

としてもOK。

--rebaseオプションを使う

pullコマンドのオプションに--rebaseがあります。
これは、前述したメインブランチの更新を作業ブランチに取り込むのではなく、作業ブランチを切った際の状態を、更新されたメインブランチに付け替えるというイメージでいいかと思います。

git pull --rebase origin {mainブランチ名}

こうすると、gitのマージコミットがスッキリします。
イメージしにくい方のために、私が書いた超綺麗な図解を載せておきますね。

ただ、元の履歴が消えてしまうので、通常のマージでログを残した方が良い場合もあります。
チームの方針を確認した方がいいとのことでしたので、注意してください。

参考サイト

https://kray.jp/blog/git-pull-rebase/
こちらのサイトは本稿の100倍詳しく、そして分かりやすいです。