マージ(merge)とは?
マージは、ブランチの変更内容を別のブランチに統合する方法で、
ブランチ間の変更履歴を保持し、新しいマージコミットが作成されます
使いたい場面
- ブランチ間の履歴に分岐やコミットがあり、それを保持したい場合
- ブランチ間でコンフリクト(競合)が少ない場合
- プルリクエスト(PR)をマージするときに、マージコミットを明示的に表示したい場合
メリット
- 変更履歴が明示的に保持され、変更の経緯が分かりやすい
- コンフリクトの発生が少なく、比較的簡単に実行できる
リベース(rebase)とは?
リベースは、対象のブランチのベースを変更し、他のブランチの変更を順に適用していく方法
コミット履歴が一つのブランチの履歴になる
使いたい場面
- コミット履歴を一つのブランチし、履歴の分岐を避けたい場合
- マージコミットを避け、きれいなコミット履歴を維持したい場合
- コミット順を保持した一つのブランチの履歴にしたい場合
メリット
- コミット履歴が一つのブランチの履歴になり見通しや管理がしやすくなる
マージとリベースの使い分け
- マージは、コラボレーションが多いプロジェクトや、変更履歴を保持したい場合に適しています。
- リベースは、コミット履歴を整理し、きれいに保ちたい場合に適しています。
3丁目オーナー
下記は、筆者の使い分けじゃ
筆者の使い分け
個人の開発フェーズでは、リベースを使用し常に最新のブランチ取得をして開発
成果物を統合する時にマージを使用
理由
個人開発ブランチは分岐や統合のないきれいな線を保ちながら開発を進めた方が見通しが良くなるため
この時にマージを使ってしまうと、簡単に最新を取り込めるものの、履歴がわかりずらくなったり、
リセットが使いづらかったりするため
個人開発中
たまに変更が多すぎてどうしても取り込めない時は、仕方なくマージを使います。
(変更が多すぎるとリベース時競合解決が面倒すぎてやってられなくなります)
この状況の発生を低減させるためにも、こまめに最新ブランチの取り込みを行いましょう!
さいごに
チーム開発におけるブランチ操作は、チームによって変わりますが、
自身のブランチでは扱いやすい方法で行い見通しをよく管理しやすい方法を使うのはとても有効です
【React&TypeScript入門】パッケージ、ESLintなどの解決方針
目次 アプリ開発直後のお困り事パッケージ構成どうする問題Atomic デザインぽく作ってみる機能で分けて作ってみるESLintの導入方法ビルドとExport方法次に気になるポイントごあいさつ アプリ開発直後のお困り事 パ
ITエンジニア・DX人材必見!超おすすめ書籍8選【直球ド定番】
インプットから改革!〜 伸び悩むすべての若手から中堅エンジニアへ 〜 必ず手に取ってほしいシステム開発の関連書籍を8冊厳選!
【完全入門】Git .gitkeep と .gitignore の違いと使い分けの話
【初心者エンジニア向け解説ガイド】.gitkeep と .gitignore の違いと使い分けを解説!これでチーム開発もスムーズに!
コメント