【完全入門】Git MergeとRebaseの違いと使い分けの話

【完全入門】Git マージとリベースの違いと使い分けの話
この記事は約3分で読めます。

マージ(merge)とは?

マージは、ブランチの変更内容を別のブランチに統合する方法で、
ブランチ間の変更履歴を保持し、新しいマージコミットが作成されます

使いたい場面

  • ブランチ間の履歴に分岐やコミットがあり、それを保持したい場合
  • ブランチ間でコンフリクト(競合)が少ない場合
  • プルリクエスト(PR)をマージするときに、マージコミットを明示的に表示したい場合

メリット

  • 変更履歴が明示的に保持され、変更の経緯が分かりやすい
  • コンフリクトの発生が少なく、比較的簡単に実行できる

リベース(rebase)とは?

リバート(revert)とは全く違います。
リバートは、過去のコミットを取り消す新しいコミットを意味します

リベースは、対象のブランチのベースを変更し他のブランチの変更を順に適用していく方法
コミット履歴が一つのブランチの履歴になる

使いたい場面

  • コミット履歴を一つのブランチし、履歴の分岐を避けたい場合
  • マージコミットを避け、きれいなコミット履歴を維持したい場合
  • コミット順を保持した一つのブランチの履歴にしたい場合

メリット

  • コミット履歴が一つのブランチの履歴になり見通しや管理がしやすくなる

マージとリベースの使い分け

  • マージは、コラボレーションが多いプロジェクトや、変更履歴を保持したい場合に適しています。
  • リベースは、コミット履歴を整理し、きれいに保ちたい場合に適しています。
3丁目オーナー
3丁目オーナー

下記は、筆者の使い分けじゃ

筆者の使い分け

個人の開発フェーズでは、リベースを使用し常に最新のブランチ取得をして開発
成果物を統合する時にマージを使用

理由

個人開発ブランチは分岐や統合のないきれいな線を保ちながら開発を進めた方が見通しが良くなるため
この時にマージを使ってしまうと、簡単に最新を取り込めるものの、履歴がわかりずらくなったり
リセットが使いづらかったりするため

個人開発中

たまに変更が多すぎてどうしても取り込めない時は、仕方なくマージを使います。
(変更が多すぎるとリベース時競合解決が面倒すぎてやってられなくなります)
この状況の発生を低減させるためにもこまめに最新ブランチの取り込みを行いましょう!

さいごに

チーム開発におけるブランチ操作は、チームによって変わりますが、
自身のブランチでは扱いやすい方法で行い見通しをよく管理しやすい方法を使うのはとても有効です

Webコンサル・デジタルマーケティングに強い【創業15年全国対応の株式会社エッコ】

フリーエンジニア5日以内に案件決定!【ギークスジョブ】

完全無料ITスクール×就職サポート付き エンジニアズゲート

スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました