Git Rebase(リベース)をつかってみよう!
前回のGitの記事につづき、今回は Git Rebase(リベース) という、ブランチの履歴を整理してきれいにする機能についてご紹介します。それでは、Git Rebase の使い方をくわしく見ていきましょう。
Rebaseとは何か?
Rebaseは、ブランチのベース(基準)を変えるコマンドです。つまり、今のブランチのコミットを、新しいベースの上にのせることができます。このコマンドは、現在のブランチ上のコミットを書き換えターゲットブランチの先頭に適用することで動作します。まるで、そのブランチを新しいコミットから作り始めたかのような状態になります。
たとえば、featureブランチ(現在のブランチ)をmainブランチ(ターゲットブランチ)の最新の状態にしたいとき、つぎのコマンドを入力します。git checkout feature
git rebase main
これで、featureブランチがmainブランチの新しいコミットの上になります。

Rebaseをなぜ使うか?
1.コミットの履歴が整理されてきれいになります。
Rebaseを使うと、まっすぐなラインに履歴が整理されます。mergeのように枝分かれが増えません。
2.レビューがやさしくなります。
Rebaseを使うと、コミットの内容が整理されるため、レビュー時にどこを修正したかがすぐに把握できます。
また、変更点が少ないため、他の人にも見やすく、チェックもしやすいです。
3.最新のmainブランチとあわせることができます。
Rebaseを使うと、自分のブランチがmainブランチの新しいコードの上になります。つまり、mainブランチの新しいコードを取り込むことで、自分のブランチをアップデートできます。
これにより、mainブランチと同じ状態から、開発を続けることが可能です。
Rebaseのコマンドgit rebase でよく使われるオプション
--continue:Rebaseの途中で、コンフリクト(コードの衝突)が発生することがあります。その場合は、自分でコンフリクトを解消します。解消後に、continueオプションを使用すると、Rebaseの作業を続行することができます。
「次のコミットを適用する」という意味です。
--abort:Rebaseをやめて、もとに戻ります。
--skip:今のコミットをスキップして、つぎへ進みます。
Rebase の注意
Rebase はとても便利ですが、気を付けないといけないこともあります。
1.公開したブランチでは使わないほうがいい
履歴が変わるので、ほかの人のブランチと合わなくなることがあります。Rebaseをすると、コミット履歴が新たに書き換えられます。そのため、他の人が同じブランチを利用している場合、内容に不整合が生じる可能性があります。
つまり、Rebaseを行う際は、チームのメンバーとの合意を十分に得ることが大切です。
開発ブランチでは、Rebaseを使うといいです。でも、mainブランチやチームで共有しているブランチでは、git mergeを使うほうが安全です。Rebaseを行うと、他の人のブランチとの間にずれが生じることがあります。
2.コンフリクトが出ることがあります。
コンフリクトとは、同じファイル内の同じ箇所を二人以上が異なる内容で修正した場合に発生します。このとき、Gitはどちらが正しいのか判断できないため、コンフリクトが発生します。
自分で正しい内容を選んで直します。
ファイルを直したあとに、git add . → git rebase --continueコマンドを使うと、Rebaseを続つづけることができます。
まとめ
今回のブログ記事では、Rebaseの使い方だけでなく、 「なぜ使うのか」「どう動作するのか」についても少し触れています。
Rebaseを上手に活用することで、チーム開発がよりスムーズに進むでしょう。
これで、Gitシリーズの記事はおわりです。つぎのシリーズでは、CI/CD(シーアイ・シーディー)について紹介します。
どうぞお楽しみに!
参考資料:
注釈
ブランチ(Branch)とは?
ブランチ(Branch)とは、プロジェクト開発において、正式なバージョン(通常は mainブランチやmasterブランチ)に影響を与えずに、新しい機能の追加やバグ修正などの作業を行うために一時的に分岐させたバージョンのことです。十分なテストを経た後、そのブランチは正式なバージョンにマージ(統合)されます。

