1. ホーム
  2. 記事一覧
  3. git mergeとgit rebaseの違いとは?|初心者でもわかる使い分けと履歴の違いを解説!

2025.07.28

git mergeとgit rebaseの違いとは?|初心者でもわかる使い分けと履歴の違いを解説!

    はじめに

    Gitで複数のブランチを使って開発を進めていると、最終的にその変更をメインのブランチへ統合する必要が出てきます。そのときによく使われるのが git mergegit rebase です。

    どちらも「ブランチを統合する」という目的は同じですが、履歴の扱い方や見え方に大きな違いがあります。特にチームでの開発では「どちらを使うべきか」によって履歴の読みやすさやトラブルの起きやすさも変わってきます。

    この記事では、まず git mergegit rebase の違いをわかりやすく比較し、初心者の方でも無理なく理解できるようにそれぞれの特徴を掘り下げていきます。先に違いを押さえたうえで、それぞれの使いどころや注意点を学んでいきましょう。

    Gitについての基本

    Gitは、ファイルの変更履歴を管理するバージョン管理ツールです。個人の作業でもチーム開発でも、「誰が・いつ・何を」変更したのかを記録でき、安心して作業が進められます。

    Gitの基本をさらに知りたい方は、以下の記事も参考にしてください。

    ▼Gitを基礎から学びたい方はこちら

    【初心者向け】GitHubとは?必須知識と使い方について解説!

    https://envader.plus/article/68

    ▼Gitコマンド早見表はこちら

    必見!現場で役立つGitコマンド29選をまとめて紹介!

    https://envader.plus/article/402

    git merge と git rebase の違い

    git mergegit rebase は、ブランチを統合するGitコマンドですが、履歴の扱い方に大きな違いがあります。git merge は分岐した履歴をそのまま保持してマージコミットを作成し、git rebase は履歴を書き換えて直線的に整理します。

    この違いは履歴の見た目だけでなく、チーム開発でのトラブル防止や履歴の読みやすさにも影響する重要なポイントです。

    次のセクションでは、それぞれの履歴がどう変化するのかを、視覚的な例を使って分かりやすく解説していきます。

    履歴の見え方の違い

    以下は、feature ブランチの作業内容を main に統合するケースです。どちらの方法でも最終的なコード内容は同じですが、履歴の見え方が大きく変わります。

    統合前の共通履歴

    以下のようなブランチの履歴があったとします。

    git merge の場合(マージコミットあり)

    git merge を実行した場合は、以下のような履歴になります。main ブランチ上に2つの履歴を統合する、F というマージコミットが自動で生成されます。そして、2つの変更履歴は保持された状態で残ります。

    • F はマージコミット(自動作成)
    • DE の履歴の保持
    • ブランチの分岐と統合の明示

    git rebase の場合(履歴を並び替え)

    git rebase を実行した場合は、以下のような履歴になります。main ブランチの後ろに feature ブランチの履歴が付け替えられ、履歴は一直線に変更されます。merge のときとは異なり、マージコミットは生成されず、履歴がすっきりまとめられます。

    • DE の履歴の並び直し(D', E' として新規作成)
    • マージコミットの非作成
    • 一連の直線的な履歴の形成

    このように、「どのブランチで、どのように開発が進んだか」を履歴に残すかどうかが両者の本質的な違いです。読みやすい履歴を重視するか、実際の作業の流れを残すかで、選ぶコマンドが変わってきます。次のセクションでは2つのコマンドの使い分けについてさらに詳しく解説します。

    git merge と git rebase どちらを使う?

    git mergegit rebase は目的によって使い分けるのがポイントです。

    履歴をどう残したいか、誰と共有しているかによって選ぶべきコマンドは異なります。状況に応じて正しく使い分けることで、より安全で読みやすい開発が実現できます。

    以下では、具体的なケースごとに選び方のコツをシチュエーション別で紹介します。

    チーム開発で、履歴の流れを明示したい場合

    git merge を選ぶのがおすすめです。

    マージコミットによって、どのブランチがいつ統合されたのかが明確に残るため、作業の流れを履歴上でたどりやすくなります。コードレビューやバグ調査の際にも、経緯の把握がしやすくなります。

    プルリクエスト提出前に、履歴をきれいにしたい場合

    git rebase が適しています。

    細かく分けたコミットや、一時的な修正を git rebase を使って整理することで、意図が伝わりやすいシンプルな履歴に整えられます。

    自分のみが使用するローカルブランチを整理したい場合

    git rebase を安全に使えます。

    他人と共有していないブランチであれば、履歴の書き換えによる影響はなく、自由にコミットを並べ替えたり統合したりできます。プッシュ前の整理に最適です。

    コンフリクトのリスクをできるだけ減らしたい場合

    git merge の方が安全です。

    rebase はコミット単位で適用するため、途中で何度もコンフリクトが発生する可能性があります。一方、merge は一括で統合されるため、衝突のリスクを比較的抑えることができます。

    リモートに push 済みのブランチの履歴を整理したい場合

    git merge の方が安全です。

    一度 push したブランチの履歴を git rebase で書き換えるのは、基本的には避けるべきです。すでに他の開発者と履歴を共有している場合、rebase による書き換えがコンフリクトや不整合を招くリスクがあります。

    どうしても履歴を修正したい場合は、チーム内での合意を得たうえで、慎重に対応する必要があります。


    ここまで、状況別に git mergegit rebase の使い分けについて紹介してきました。それぞれの特徴や注意点を理解することで、目的に応じた安全で効率的なブランチ運用が可能になります。

    では、そもそもなぜブランチの統合が必要なのかを簡単に整理しておきましょう。

    なぜブランチの統合が必要か

    Gitでは、機能ごとに担当を分けて開発する際に、開発者ごとにブランチを作成して作業するのが一般的です。実装が完了したブランチは、最終的に本番用の1つのブランチ(多くの場合main)に統合され、アプリケーション全体として稼働するコードになります。

    この統合(=ブランチ統合)は、主に次のような状況で必要になります。

    • チームメンバーが実装した機能を1つのブランチにまとめる場合
    • 作業中の自分のブランチに、チームの最新コードを取り込む場合

    特に後者の場合、作業ブランチが古いままだと、プルリクエスト時に他の変更と競合(コンフリクト)するリスクが高くなります。事前にmainブランチの最新状態を取り込んでおくことで、コンフリクトの発生を防ぎ、スムーズな統合が可能になります。

    それでは次に、実際に git mergegit rebase を使う手順について、基本的なコマンド例を交えながら確認していきましょう。

    git marge と git rebase の使い方

    git mergegit rebase の基本的な使い方を知っておくと、実際のブランチ操作がスムーズになります。

    このセクションでは、初心者でも迷わず使えるように、git mergegit rebase の実行手順を具体例とともに解説します。

    git merge の使い方

    git merge は、現在いるブランチ(=マージ先)に、別のブランチ(=マージ元)の内容を取り込むコマンドです。

    たとえば、feature ブランチで作業を終えたあと、それを main ブランチに統合したい場合は、以下の手順でブランチを指定して使用します。

    # 1.マージ先のブランチに移動
    git switch main
    
    # 2.マージ元のブランチを指定して統合
    git merge feature

    このとき、main ブランチの履歴上に feature の変更が取り込まれ、必要に応じてマージコミットが作成されます。「マージ先=今いるブランチ」「マージ元=コマンドで指定するブランチ」というルールを覚えておくと迷いません。

    git rebase の使い方

    git rebase は、現在のブランチの履歴を、指定したブランチの直後に付け直す操作です。よくあるのは、作業ブランチを main の最新状態に追従させるケースです。

    たとえば、feature ブランチで作業中に main に他の変更が入っていた場合、以下のようにして rebase を行います。

    # 1.作業ブランチ(feature)に移動
    git switch feature
    
    # 2.最新のmainブランチの履歴を取り込む
    git rebase main

    この操作により、feature のコミットは main の最新コミットの後ろに並び直され、あたかも main から作業を始めたかのような履歴になります。rebase の場合は「今いるブランチの履歴を、指定したブランチの後ろに移動させる」というイメージで覚えると理解しやすいです。


    このように、mergerebase では「どちらを現在のブランチにしておくか」「どちらのブランチ名をコマンドで指定するか」のルールが異なるため、最初のうちは混同しやすいポイントです。実際にコマンド操作をして覚えると良いでしょう。

    git merge git rebaseについてさらに詳しく知る

    git mergegit rebase については以下の記事でさらに詳しく解説しています。それぞれのコマンドの基本から知っておきたいオプション、さらに応用やトラブル回避策を解説していますので、ぜひあわせてご覧ください。

    git のブランチの切り替え

    このセクションのコード例で使用した git switch は、ブランチを切り替える専用コマンドで、Git 2.23(2019年)から導入されました。初心者にも分かりやすく、安全に使える構文として注目されています。以下の記事もあわせてご覧ください。

    merge と rebaseを併用することでさらに便利に

    mergerebase は、場面によって使い分けるだけでなく、組み合わせて使うことでより便利にブランチ運用ができます。

    たとえば次のような運用がよく使われます。

    1. 作業中は rebase を使って履歴を整理

      → プルリクエスト前にコミットを整えたり、最新の main を取り込むときに履歴をきれいに保てます。

    2. main に統合するときは merge を使用

      → チームの履歴を壊さず、統合の記録をマージコミットとして残せます。

    このように併用することで、「きれいな履歴」と「安全な統合」の両方を実現できます。

    まとめ:mergeとrebaseを正しく使い分けよう

    git mergegit rebase は、どちらも強力なブランチ統合コマンドです。履歴の形やチームでの運用ルールに応じて、適切に使い分けることが大切です。

    • 履歴を残して安全に統合したいときは merge
    • 履歴を整理してシンプルにしたいときは rebase

    それぞれの性質を理解し、状況に応じた選択ができれば、開発の効率と保守性が高まります。

    git merge と git rebase の比較表

    以下の表では、2つのコマンドの主な違いを比較しています。

    項目git mergegit rebase
    履歴の形分岐した履歴(非線形)直線的な履歴
    マージコミット作成される作成されない
    コンフリクト解決1回で済むコミット数分必要な場合がある
    履歴の追跡誰がいつ何をしたか明確シンプルだが詳細が失われる
    安全性高い(履歴を書き換えない)注意が必要(履歴を書き換える)
    適した場面チーム開発、公開ブランチ個人作業、プライベートブランチ

    それぞれのメリット・デメリットを正しく理解することで、状況に応じた最適な選択がしやすくなります。ご自身の状況に合わせてコマンドを使い分けてみてください。


    さまざまなGitコマンドを活用できるようになると、Git操作に自信がつきます。もし、Git操作が不慣れと感じている方には、次に紹介する学習方法がおすすめです。

    Gitの使い方を学ぶ:おすすめの学習方法

    「Gitの操作、まだちょっと不安かも…」そんな方におすすめなのが、「エンベーダー」です。 Gitの基本コマンドをはじめ、エンジニアに欠かせないLinuxの知識や操作をブラウザ上で気軽に学べる学習サービスです。

    環境構築は不要。わずか5秒で学習環境が起動し、実際にコマンドを入力しながら学べるので、ゲーム感覚で楽しくスキルを習得できます

    エンベーダー公式サイト - Gitの使い方コース

    https://envader.plus/course/5/scenario/1055

    ポイント1:コマンド入力はすべてブラウザ上で完結。実際に手を動かして学べます。

    ポイント2:入力したコマンドの正誤や解説を、すぐに確認できます。

    ポイント3:Gitだけでなく、Linuxやデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。

    エンベーダーの学習コース一覧

    https://envader.plus/course

    いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。

    参考資料

    以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。

    【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

    IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

    プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

    「フリーランスエンジニア」

    近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

    「成功する人とそうでない人の違いは何か?」

    私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

    比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

    多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

    note記事3000いいね超えの殿堂記事 LINE登録で記事を見る

    エンベーダー編集部

    エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

    RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

    関連記事