git rebaseとは?基本からmergeの使い分けまで丁寧に解説

git rebaseとは?基本からmergeの使い分けまで丁寧に解説

「git rebaseって危険って聞くけど、本当に使って大丈夫?」

Gitを学び始めたばかりの人は、rebaseに対して「履歴が変わるのが怖い」「間違えたら元に戻せないかも」と不安に思うかもしれません。

確かにrebaseは強力なコマンドですが、正しく使えば履歴を整理し、開発を効率化できる便利なツールです。

この記事では、rebaseの基本的なことから、具体的な使い方やmergeとの使い分けまで丁寧に解説します。

Gitのrebaseとは?

Gitのrebaseとは? Gitのrebaseは、あるブランチの変更を別のブランチに適用し、履歴を整理する操作です。

mergeが2つのブランチを結合して新たなコミットを作成するのに対し、rebaseはブランチの起点を変更することで、コミット履歴を書き換えます。

たとえば、featureブランチを作業中に、developブランチに他の開発者の変更が取り込まれたとします。このとき、featureブランチをdevelopブランチにrebaseすると、あたかもfeatureブランチがdevelopブランチの最新の状態から分岐したかのように見えます。

これにより、コミット履歴が一直線になり、非常に見やすく、理解しやすくなります。

複雑なブランチ構造になりがちな大規模プロジェクトでは、rebaseによってコミット履歴を整理することが、開発効率の向上に大きく役立ちます。

git rebaseの基本的な使い方

git rebase の基本的な目的は、ローカルブランチを最新の状態に保つことです。

ここでは、具体的なコマンドと例を用いて、詳しく解説します。

  • rebaseの準備
  • rebaseの実行
  • コンフリクトの対処法

それぞれ順番に解説していきます。

1. rebaseの準備

まずは、rebase したいブランチのベースとなるdevelopブランチを最新の状態にします。

以下のコマンドを実行してください。

git checkout develop

git pull origin develop

コマンドを実行すると、ローカルのdevelopブランチがリモートの最新のdevelopブランチと同期されます。

2. rebaseの実行

次に、featureブランチに切り替えて、rebaseを実行しましょう。

git checkout feature

git rebase develop

Gitはfeatureブランチのコミットを一時的に保存し、developブランチの最新の状態をfeatureブランチに適用します。

最新のdevelopブランチが適用された後、保存されていたfeatureブランチのコミットが順番に適用されます。

3. コンフリクトの対処法

rebase中にコンフリクトが発生すると、Gitは処理を一時停止し、対象のファイルに「!」が表示されます。

コンフリクトが起きたファイルを開いて、以下の手順で解決しましょう。

  • コンフリクトが発生したファイルをエディタで開く
  • 記号(<<<<<<<、=======、>>>>>>>)を確認する
  • 必要な変更点を手動で修正する
  • 修正後にコマンドで変更を確定する

コンフリクトが発生した箇所には、記号(<<<<<<<、=======、>>>>>>>)が表示されます。

コンフリクトの目印として使用されているだけなので、正しいソースコードを確認したら、記号は削除しましょう。

エディタで直接編集を終えたら、保存して次のコマンドを実行します。

git add 修正したファイル名

git commit -m “コミットのメッセージ”

コンフリクトの修正箇所が多く、rebaseの作業をキャンセルしたい場合は、以下のコマンドを実行しましょう。

git merge –abort

コンフリクトとは
同じファイルの同じ部分に別々の修正があると、rebaseやmergeをするときに競合が発生します。Gitは自動で統合できず、どの変更を採用するかを手動で解決する必要があります。

git rebaseとgit mergeの違い

git rebaseとgit mergeの違い

git mergeとgit rebaseはどちらもブランチを統合できますが、統合する方法が異なります。

たとえば、ブランチCで追加されたコミットをsample-buttonブランチに取り込むことにしたときを想定してみましょう。

mergeの場合は、過去のコミットは変更されずに、mergeをするだけの新しいコミットFが作成されます

rebaseの場合は、もともとのコミットが改変され、rebase先のブランチに追加されて一直線の履歴になります。

同じように統合されるmergeとrebaseですが、ソースコードは同じでも履歴が違うものになります。

使用するときは、十分に気をつけましょう。

ローカルブランチ:個人作業はrebaseでコミット履歴を整理する
リモートブランチ(共有ブランチ):原則は避ける。rebaseしたいときはチームメンバーに相談する
重要な履歴:過去の記録を残しておきたいときはmergeを使用する
rebaseかmergeで迷ったとき:mergeを使用する

git rebaseの5つの注意点

rebaseは強力なツールですが、使い方を間違えると、コミット履歴を壊したり、チーム開発に混乱を招いたりする可能性があります。

ここでは、安全にrebaseをするための注意点を5つ紹介します。

  1. 公開済みのコミットはrebaseしない
  2. rebase前に必ずバックアップを取る
  3. コンフリクト解決は慎重にする
  4. インタラクティブrebaseは丁寧にする
  5. rebase後は必ず動作確認をする

git rebaseを使用する前にチェックしてみてください。

1. 公開済みのコミットはrebaseしない

最も重要なルールです。

リモートリポジトリにpush済みのコミットをrebaseすると、リモートリポジトリの履歴とローカルリポジトリの履歴に矛盾が生じます。

たとえば、あなたがdevelopブランチにrebaseしたブランチをpushしてしまい、他の開発者がその変更をpullした場合、その開発者のローカルリポジトリはあなたの変更履歴と一致しなくなります。

これを解決するためには、強制的にpush (`git push –force`) する必要がありますが、他の開発者の作業を上書きしてしまう可能性があるため、非常に危険な行為です。

2. rebase前に必ずバックアップを取る

rebase中に予期せぬ問題が発生した場合に備えて、rebase前に必ずバックアップを取っておきましょう。

git branch backup-branch

このコマンドを実行すると、現在のブランチの状態を backup-branchという名前で保存できます。

rebase後に問題が発生した場合は、このバックアップブランチから復元できます。

3. コンフリクト解決は慎重にする

rebase中にコンフリクトが発生した場合、焦らずに慎重に解決しましょう。

コンフリクトがあった場所をよく確認し、必要な変更を正確に反映させることが重要です。

コンフリクトの解決を誤ると、意図しない変更がコミットされ、プログラムが正常に動作しなくなる可能性があります。

不安な場合は、チームメンバーに相談したり、コンフリクト解決ツールを活用してみましょう。

4. インタラクティブrebaseは丁寧にする

git rebase -i コマンドを使うと、コミット履歴を自由に編集できますが、その分リスクも高まります。

コミットの削除や結合をするときは、本当に必要な操作かどうかを慎重に検討しましょう。

特に、drop コマンドでコミットを削除すると、そのコミットに含まれる変更は完全に失われます。

削除する前に、本当に不要なコミットかどうかを再確認しましょう。

インタラクティブrebaseとは
Gitのコミット履歴を編集できる機能。過去のコミットをまとめたり、順番を変更したり、削除したりできるため、履歴を整理して見やすくするのに役立ちます。

5. rebase後は必ず動作確認をする

rebase後に、アプリが正常に動作するかどうかを必ず確認しましょう。

rebaseしたことで、予期せぬ問題が発生している可能性があります。

ユニットテストや結合テストを実行し、アプリの主要な機能が正常に動作しているかチェックする必要があります。

rebase後に問題が発生した場合は、rebase前の状態に戻し、原因を調査してから、再度rebaseを実行しましょう。

まとめ:rebaseをマスターしてGitを使いこなそう

Git rebaseは、ブランチの履歴を整理し、統合するための強力なGitコマンドです。

mergeとの違いを理解し、rebaseの基本的な使い方や注意点を押さえることで、開発効率が向上します。

Gitの知識だけでなくWeb制作のスキルを体系的に学びたい方は、デイトラWeb制作コースがおすすめです。実践的な課題に取り組みながら、現場で使える技術が効率よく学べます。

未経験からコーディングを学ぶならデイトラWeb制作コースがおすすめ!

デイトラWeb制作コースは、実務レベルの本格スキルを学び、Web制作を仕事にしたい方におすすめのコースです。

HTML/CSSやjavaScriptの言語の基本はもちろん、デザインカンプからのコーディング、WordPressのオリジナルテーマ作成までカリキュラムに含まれています。

さらに、中級・上級の最終課題はメンターによる課題レビューがあります。現場目線の品質チェックが受けられるため、大幅なスキルアップが期待できるでしょう。

Web制作のスキルを身につけたい方は、ぜひデイトラWeb制作コースをチェックしてみてください!

【Webスキル診断】“一生使えるスキル”を60秒で診断しよう!

CTA-IMAGE 「フリーランスになりたいけど、どんなスキルを身につければいいかわからない」という悩みを解決すべく、東京フリーランスでは【Webスキル診断】をLINEで無料実施中です! Web制作・Webデザイン・アプリ開発・動画編集など「自分に合った理想の働き方は何か」を見極めていただけます。

Web制作カテゴリの最新記事