Gitマージ戦略:Fast-forward、No-ff、Squash
Gitマージ戦略を理解:fast-forward、--no-ff、--squash。各戦略をいつ使用するか、コミット履歴にどう影響するかを学びます。
Branching
詳細な説明
Gitマージ戦略
Gitはブランチをマージする複数の方法を提供し、それぞれ異なるコミット履歴の形を生成します。
Fast-forwardマージ(デフォルト)
フィーチャーブランチ作成後にターゲットブランチに新しいコミットがない場合、Gitは単にポインタを前に進めます。
No Fast-forward (--no-ff)
fast-forwardが可能でもマージコミットを強制します。
git merge --no-ff feature/login
Squashマージ
フィーチャーブランチのすべてのコミットをターゲットブランチの単一コミットに結合します。
git merge --squash feature/login
git commit -m "feat: ログイン機能を追加"
比較
| 戦略 | マージコミット | ブランチ履歴 | リニアリティ |
|---|---|---|---|
| Fast-forward | なし | 失われる | リニア |
--no-ff |
あり | 保存される | ブランチ型 |
--squash |
なし(手動) | 失われる | リニア |
ユースケース
マージ戦略の選択はプロジェクト履歴の可読性に影響するチームレベルの決定です。fast-forwardはソロプロジェクトに適し、--no-ffはブランチ境界を見たいチームに人気があり、squashマージはクリーンなmainブランチを求めるオープンソースプロジェクトの標準です。