ブランチとマージ
Diversion のブランチとマージにより、チームは安定したメインブランチを維持しながら、複数の機能を並行して作業できます。ミリ秒単位のブランチ作成とスマートマージにより、Diversion は並行開発を簡単にします。ブランチとは?
ブランチ は、リポジトリ内の独立した開発ラインです。ブランチを使用すると:- メインコードベースに影響を与えずに機能に取り組む
- 変更を安全に試す
- 別々のタスクを同時に共同作業する
- 新機能を開発しながら安定したリリースバージョンを維持する
- リポジトリのサイズに関係なく、ブランチの作成はミリ秒単位
- ブランチはサーバーサイド(クラウドベース)
- すべてのチームメンバーがすべてのブランチを見ることができる
- ファイルのコピーや重複はなし
ブランチとワークスペースの違い
ブランチについて詳しく学ぶ前に、ブランチがワークスペースとどのように関連しているかを理解することが重要です:
こう考えてください:
- ブランチ = コードが存在する場所(
main、feature-ui、bugfix-123など) - ワークスペース = 個人的な作業台(ファイルをローカルで編集する場所)
ブランチを作成する
デスクトップアプリでブランチを作成 することもできます。新しいブランチを作成する
現在の位置からブランチを作成します:- Diversion は現在のコミットを指す新しいブランチを作成します
- ブランチはすぐにすべてのチームメンバーが利用できるようになります
- 作成にはリポジトリサイズに関係なく約 100ms かかります
特定のコミットからブランチを作成する
すべてのブランチを一覧表示する
* はワークスペースの現在のブランチを示します。
ブランチ間の切り替え
デスクトップアプリでブランチを切り替える こともできます。ブランチをチェックアウトする
ワークスペースを別のブランチに切り替えます:- Diversion はワークスペースのファイルをターゲットブランチに合わせて更新します
- ローカルファイルはブランチの状態を反映するように変更されます
- 新しいコミットはこのブランチに対して行われます
ブランチをマージする
デスクトップアプリでブランチをマージ することもできます。 マージは、あるブランチの変更を別のブランチに統合します。Diversion は自動的な競合検出を備えたスマートマージをサポートしています。基本的なマージのワークフロー
目標:feature-ui を main にマージする
1
ターゲットブランチに切り替える
まず、マージ 先 のブランチをチェックアウトします:
2
ソースブランチをマージする
機能ブランチを main にマージします:
3
競合を解決する(必要な場合)
競合がある場合、Diversion が解決を案内します:
4
機能ブランチを削除する(オプション)
マージ後、機能ブランチを削除できます:
マージの仕組み
Diversion は共通祖先の検出を伴う 3-way マージ を使用します:dv merge feature-ui を実行すると:
- Diversion は 共通祖先(コミット B)を見つけます
- B→C(main の変更)の変更を比較します
- B→E(feature の変更)の変更を比較します
- 両方の変更セットをインテリジェントに結合します
- 新しいマージコミットを作成します:
- 両方のブランチの履歴を保持
- 競合を正確に検出
- 完全な監査証跡を維持
マージ戦略
通常のマージ(デフォルト):- 両方のブランチのすべてのコミットを保持
- マージコミットを作成
dv logで完全な履歴を確認可能
- 完全な履歴が欲しい場合
- 機能のコミットが重要なマイルストーンである場合
- 誰がどの変更を行ったかを追跡する必要がある場合
マージ競合の処理
デスクトップアプリは視覚的な競合解決ツールを提供します — デスクトップアプリでのマージ競合 を参照してください。 マージ競合は、同じ行のコードが両方のブランチで変更された場合に発生します。競合検出
Diversion は競合が発生する前に防止します: リアルタイム通知:- 誰がどのファイルを編集しているか確認できる
- 作業中のファイルをチームメイトが変更したときに通知を受ける
- 競合が発生する前に変更を調整する
競合を解決する
競合が発生した場合、Diversion は簡単に解決できるようにします:1
競合するファイルを特定する
2
競合するファイルを開く
競合マーカーは両方のバージョンを表示します:
3
変更を選択または結合する
ファイルを編集して競合を解決します:
4
解決済みとしてマークする
解決したマージをコミットします:
競合解決のオプション
片方を完全に受け入れる: Web UI または API から:- 「ours」を受け入れる(main のバージョンを保持)
- 「theirs」を受け入れる(機能ブランチのバージョンを使用)
- すべての競合を一度に受け入れる
- ファイルを編集して変更を結合する
- 満足したらコミットする
ブランチのベストプラクティス
1. ブランチ命名規則
説明的で一貫した名前を使用します: 良い例:feature/- 新機能bugfix/- バグ修正hotfix/- 緊急の本番修正release/- リリースブランチexperimental/- 実験的な作業
2. ブランチを短命に保つ
理由:- マージ競合を減らす
- 変更のレビューが容易
- 迅速な統合
- 機能ブランチは週単位ではなく数日以内にマージする
- マージ後にブランチを削除する
- 小さく焦点を絞ったブランチを作成する
3. 頻繁にマージする
main を定期的に機能ブランチにマージします:
- 小さく容易なマージ
- 競合を早期に検出
- 機能が最新の main と互換性を保つ
4. 説明的なコミットメッセージを使う
5. マージ済みのブランチを削除する
マージ後、整理します:一般的なブランチワークフロー
機能ブランチワークフロー
適用対象:複数の機能を同時に開発するチームリリースブランチワークフロー
適用対象:複数のリリースバージョンの管理ホットフィックスワークフロー
適用対象:緊急の本番修正トラブルシューティング
「Cannot switch branches: uncommitted changes」
問題: ワークスペースにコミットされていない変更があります。 解決方法:「Merge conflict in multiple files」
問題: 多くのファイルに競合があります。 解決方法:- 一度に1ファイルずつ競合を解決する
dv statusを使用して進捗を追跡する- 重要でないファイルには片方を受け入れることを検討する
- 重要なファイルは手動でマージする
「Branch already exists」
問題: ブランチ名が既に使用されています。 解決方法:CLI リファレンス
ブランチ管理:関連リソース
コアコンセプト: ワークフロー: CLI リファレンス:最終更新: 2025-10-26

