
はじめに
Gitで複数のブランチを使って開発を進めていると、最終的にその変更をメインのブランチへ統合する必要が出てきます。そのときによく使われるのが git merge
と git rebase
です。
どちらも「ブランチを統合する」という目的は同じですが、履歴の扱い方や見え方に大きな違いがあります。特にチームでの開発では「どちらを使うべきか」によって履歴の読みやすさやトラブルの起きやすさも変わってきます。
この記事では、まず git merge
と git rebase
の違いをわかりやすく比較し、初心者の方でも無理なく理解できるようにそれぞれの特徴を掘り下げていきます。先に違いを押さえたうえで、それぞれの使いどころや注意点を学んでいきましょう。
Gitについての基本
Gitは、ファイルの変更履歴を管理するバージョン管理ツールです。個人の作業でもチーム開発でも、「誰が・いつ・何を」変更したのかを記録でき、安心して作業が進められます。
Gitの基本をさらに知りたい方は、以下の記事も参考にしてください。
▼Gitを基礎から学びたい方はこちら
【初心者向け】GitHubとは?必須知識と使い方について解説!
https://envader.plus/article/68
▼Gitコマンド早見表はこちら
必見!現場で役立つGitコマンド29選をまとめて紹介!
https://envader.plus/article/402
git merge と git rebase の違い
git merge
と git rebase
は、ブランチを統合するGitコマンドですが、履歴の扱い方に大きな違いがあります。git merge
は分岐した履歴をそのまま保持してマージコミットを作成し、git rebase
は履歴を書き換えて直線的に整理します。
この違いは履歴の見た目だけでなく、チーム開発でのトラブル防止や履歴の読みやすさにも影響する重要なポイントです。
次のセクションでは、それぞれの履歴がどう変化するのかを、視覚的な例を使って分かりやすく解説していきます。
履歴の見え方の違い
以下は、feature
ブランチの作業内容を main
に統合するケースです。どちらの方法でも最終的なコード内容は同じですが、履歴の見え方が大きく変わります。
統合前の共通履歴
以下のようなブランチの履歴があったとします。
git merge の場合(マージコミットあり)
git merge
を実行した場合は、以下のような履歴になります。main
ブランチ上に2つの履歴を統合する、F
というマージコミットが自動で生成されます。そして、2つの変更履歴は保持された状態で残ります。
F
はマージコミット(自動作成)D
とE
の履歴の保持- ブランチの分岐と統合の明示
git rebase の場合(履歴を並び替え)
git rebase を実行した場合は、以下のような履歴になります。main
ブランチの後ろに feature
ブランチの履歴が付け替えられ、履歴は一直線に変更されます。merge
のときとは異なり、マージコミットは生成されず、履歴がすっきりまとめられます。
D
とE
の履歴の並び直し(D'
,E'
として新規作成)- マージコミットの非作成
- 一連の直線的な履歴の形成
このように、「どのブランチで、どのように開発が進んだか」を履歴に残すかどうかが両者の本質的な違いです。読みやすい履歴を重視するか、実際の作業の流れを残すかで、選ぶコマンドが変わってきます。次のセクションでは2つのコマンドの使い分けについてさらに詳しく解説します。
git merge と git rebase どちらを使う?
git merge
と git rebase
は目的によって使い分けるのがポイントです。
履歴をどう残したいか、誰と共有しているかによって選ぶべきコマンドは異なります。状況に応じて正しく使い分けることで、より安全で読みやすい開発が実現できます。
以下では、具体的なケースごとに選び方のコツをシチュエーション別で紹介します。
チーム開発で、履歴の流れを明示したい場合
→ git merge
を選ぶのがおすすめです。
マージコミットによって、どのブランチがいつ統合されたのかが明確に残るため、作業の流れを履歴上でたどりやすくなります。コードレビューやバグ調査の際にも、経緯の把握がしやすくなります。
プルリクエスト提出前に、履歴をきれいにしたい場合
→ git rebase
が適しています。
細かく分けたコミットや、一時的な修正を git rebase
を使って整理することで、意図が伝わりやすいシンプルな履歴に整えられます。
自分のみが使用するローカルブランチを整理したい場合
→ git rebase
を安全に使えます。
他人と共有していないブランチであれば、履歴の書き換えによる影響はなく、自由にコミットを並べ替えたり統合したりできます。プッシュ前の整理に最適です。
コンフリクトのリスクをできるだけ減らしたい場合
→ git merge
の方が安全です。
rebase
はコミット単位で適用するため、途中で何度もコンフリクトが発生する可能性があります。一方、merge
は一括で統合されるため、衝突のリスクを比較的抑えることができます。
リモートに push 済みのブランチの履歴を整理したい場合
→ git merge
の方が安全です。
一度 push
したブランチの履歴を git rebase
で書き換えるのは、基本的には避けるべきです。すでに他の開発者と履歴を共有している場合、rebase
による書き換えがコンフリクトや不整合を招くリスクがあります。
どうしても履歴を修正したい場合は、チーム内での合意を得たうえで、慎重に対応する必要があります。
ここまで、状況別に git merge
と git rebase
の使い分けについて紹介してきました。それぞれの特徴や注意点を理解することで、目的に応じた安全で効率的なブランチ運用が可能になります。
では、そもそもなぜブランチの統合が必要なのかを簡単に整理しておきましょう。
なぜブランチの統合が必要か
Gitでは、機能ごとに担当を分けて開発する際に、開発者ごとにブランチを作成して作業するのが一般的です。実装が完了したブランチは、最終的に本番用の1つのブランチ(多くの場合main
)に統合され、アプリケーション全体として稼働するコードになります。
この統合(=ブランチ統合)は、主に次のような状況で必要になります。
- チームメンバーが実装した機能を1つのブランチにまとめる場合
- 作業中の自分のブランチに、チームの最新コードを取り込む場合
特に後者の場合、作業ブランチが古いままだと、プルリクエスト時に他の変更と競合(コンフリクト)するリスクが高くなります。事前にmain
ブランチの最新状態を取り込んでおくことで、コンフリクトの発生を防ぎ、スムーズな統合が可能になります。
それでは次に、実際に git merge
と git rebase
を使う手順について、基本的なコマンド例を交えながら確認していきましょう。
git marge と git rebase の使い方
git merge
と git rebase
の基本的な使い方を知っておくと、実際のブランチ操作がスムーズになります。
このセクションでは、初心者でも迷わず使えるように、git merge
と git 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
の場合は「今いるブランチの履歴を、指定したブランチの後ろに移動させる」というイメージで覚えると理解しやすいです。
このように、merge
と rebase
では「どちらを現在のブランチにしておくか」「どちらのブランチ名をコマンドで指定するか」のルールが異なるため、最初のうちは混同しやすいポイントです。実際にコマンド操作をして覚えると良いでしょう。
git merge git rebaseについてさらに詳しく知る
git merge
と git rebase
については以下の記事でさらに詳しく解説しています。それぞれのコマンドの基本から知っておきたいオプション、さらに応用やトラブル回避策を解説していますので、ぜひあわせてご覧ください。
git のブランチの切り替え
このセクションのコード例で使用した git switch
は、ブランチを切り替える専用コマンドで、Git 2.23(2019年)から導入されました。初心者にも分かりやすく、安全に使える構文として注目されています。以下の記事もあわせてご覧ください。
-
git switch完全ガイド|初心者でも安全にブランチを切り替える使い方とハンズオン
merge と rebaseを併用することでさらに便利に
merge
と rebase
は、場面によって使い分けるだけでなく、組み合わせて使うことでより便利にブランチ運用ができます。
たとえば次のような運用がよく使われます。
-
作業中は
rebase
を使って履歴を整理→ プルリクエスト前にコミットを整えたり、最新の
main
を取り込むときに履歴をきれいに保てます。 -
main
に統合するときはmerge
を使用→ チームの履歴を壊さず、統合の記録をマージコミットとして残せます。
このように併用することで、「きれいな履歴」と「安全な統合」の両方を実現できます。
まとめ:mergeとrebaseを正しく使い分けよう
git merge
と git rebase
は、どちらも強力なブランチ統合コマンドです。履歴の形やチームでの運用ルールに応じて、適切に使い分けることが大切です。
- 履歴を残して安全に統合したいときは
merge
- 履歴を整理してシンプルにしたいときは
rebase
それぞれの性質を理解し、状況に応じた選択ができれば、開発の効率と保守性が高まります。
git merge と git rebase の比較表
以下の表では、2つのコマンドの主な違いを比較しています。
項目 | git merge | git rebase |
---|---|---|
履歴の形 | 分岐した履歴(非線形) | 直線的な履歴 |
マージコミット | 作成される | 作成されない |
コンフリクト解決 | 1回で済む | コミット数分必要な場合がある |
履歴の追跡 | 誰がいつ何をしたか明確 | シンプルだが詳細が失われる |
安全性 | 高い(履歴を書き換えない) | 注意が必要(履歴を書き換える) |
適した場面 | チーム開発、公開ブランチ | 個人作業、プライベートブランチ |
それぞれのメリット・デメリットを正しく理解することで、状況に応じた最適な選択がしやすくなります。ご自身の状況に合わせてコマンドを使い分けてみてください。
さまざまなGitコマンドを活用できるようになると、Git操作に自信がつきます。もし、Git操作が不慣れと感じている方には、次に紹介する学習方法がおすすめです。
Gitの使い方を学ぶ:おすすめの学習方法
「Gitの操作、まだちょっと不安かも…」そんな方におすすめなのが、「エンベーダー」です。 Gitの基本コマンドをはじめ、エンジニアに欠かせないLinuxの知識や操作をブラウザ上で気軽に学べる学習サービスです。
環境構築は不要。わずか5秒で学習環境が起動し、実際にコマンドを入力しながら学べるので、ゲーム感覚で楽しくスキルを習得できます。
エンベーダー公式サイト - Gitの使い方コース
https://envader.plus/course/5/scenario/1055
ポイント1:コマンド入力はすべてブラウザ上で完結。実際に手を動かして学べます。
ポイント2:入力したコマンドの正誤や解説を、すぐに確認できます。
ポイント3:Gitだけでなく、Linuxやデータベース操作など、今後のキャリアに活かせる学習コースも豊富に用意されています。
エンベーダーの学習コース一覧
いくつかのコースは無料で体験できるため、「コマンドに慣れたい」「楽しくGitを身につけたい」という方は、ぜひ一度エンベーダーを試してみてください。
参考資料
以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。
-
Git公式ドキュメント - git-merge
-
Git公式ドキュメント - 3.2 Git のブランチ機能 - ブランチとマージの基本
-
Git公式ドキュメント - git rebase
-
Git公式ドキュメント - Git のブランチ機能 - リベース
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

関連記事

2025.06.26
【Git】git cherry-pickとは?便利な使い方と注意点を解説
別ブランチのコミットを一つだけ取り込み、バグ修正などに活用。git cherry-pickの基本からオプション、コンフリクト発生時の注意点までを解説します。
- git

2024.05.30
Git初心者必見!マージコンフリクトの解消方法を解説
マージコンフリクトは、異なるブランチで同じファイルの同じ行が変更されたときに発生する問題です。Gitは自動的に変更をマージできないため、手動で解決する必要があります。これは、チーム開発において避けられない問題であり、解決方法を知っておくことが重要です。
- git

2023.11.26
gitのコミット履歴を整理するためにsquashを使いこなそう
Squashは、複数のコミットを1つのコミットにまとめる操作です。Squashを使用すると、コミットの履歴を整理したり、コミットのメッセージや変更内容を変更したりすることができます。
- インフラエンジニア
- git

2025.06.12
【初心者向け】git resetでコミットを取り消す方法|3つのモードの違いと基本の使い方をわかりやすく解説
git resetは、コミットを取り消すためのGitコマンドの一つです。具体的には、指定したコミット以降の履歴を削除し、ブランチの状態を過去に戻す操作を行います。
- git