> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 並行して作業する

> ブランチとマージ

チームでプロジェクトに取り組みたいけれど、互いの作業を邪魔したくないですよね。
ご安心を!互いの作業に干渉することなく並行してプロジェクトを進め、最後にすべてを組み合わせる方法があります。
それが「ブランチとマージ」です。

## ブランチ

ブランチは、プロジェクトの別バージョンのようなものと考えることができます。
ブランチを作成すると、その時点でのプロジェクトのコピーを作成することになります。

### 新しいブランチの作成

デスクトップアプリで:

<Steps>
  <Step title="'+ New branch' をクリック">
    リポジトリビューの左上にあるブランチセレクタを開き、**+ New branch** をクリックします。

    <img src="https://mintcdn.com/diversion-2/Ro_2EfA8JfapE5By/images/branching-and-merging-create-new-branch-button.png?fit=max&auto=format&n=Ro_2EfA8JfapE5By&q=85&s=164aa204ed46e46d061124951f9625d1" alt="The new branch button" width="360" height="224" data-path="images/branching-and-merging-create-new-branch-button.png" />
  </Step>

  <Step title="ブランチ名を選ぶ">
    作業内容が分かるようなブランチ名を付けましょう。
    また、分岐元のコミットにも注意してください — これが新しいブランチのベースになります。
    作成後にそのブランチへ自動で切り替えるには、チェックボックス(デフォルトでオン)をオンのままにしておきます。

    <img src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/branching-and-merging-create-new-branch-modal.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=dd8e58ee223212402825347c00aff2be" alt="The new branch modal window" width="547" height="340" data-path="images/branching-and-merging-create-new-branch-modal.png" />
  </Step>

  <Step title="Create をクリックする" />
</Steps>

CLI での操作については、ブランチの作成やその他のオプションについて [branch コマンド](/ja/cmd-ref/branch) を参照してください。

### ブランチの切り替え

デスクトップアプリでは、左上のブランチセレクタに現在のブランチが表示されます。クリックすると、**Branches** タブでリポジトリ内のすべてのブランチが表示されます(デフォルトブランチには家のアイコンが付いています)。
別のブランチをクリックすると、切り替えずに読み取り専用モードで表示できます。
切り替えるには、切り替えたいブランチのメニューをクリックし、「Switch to branch」を選択します。

<img src="https://mintcdn.com/diversion-2/Ro_2EfA8JfapE5By/images/branching-and-merging-switch-branch.png?fit=max&auto=format&n=Ro_2EfA8JfapE5By&q=85&s=cb95abc0607abadfc5b9c9b3c631112f" alt="Switch branch" width="452" height="356" data-path="images/branching-and-merging-switch-branch.png" />

ワークスペースにコミットされていない変更がある場合、破棄するか、後で使うために[シェルフに保存](/ja/basic/shelves) するか、可能であれば新しいブランチに持っていくかを選択できます(下の [マージ競合](#マージ競合) を参照)。

CLI での操作については、ブランチ切り替えについて [checkout コマンド](/ja/cmd-ref/checkout) を参照してください。

ブランチを切り替えると、コンピューター上のファイルが変更されます。Unreal Engine などの一部のゲームエンジンでは、変更を反映するためにエディタの再起動が必要な場合があります。

### ブランチグラフ

デスクトップアプリでは、すべてのブランチとコミットの視覚的なグラフを見ることができます。

<Steps>
  <Step title="ブランチグラフを開く">
    左側のナビゲーションレールで **Graph** をクリックします。

    <img src="https://mintcdn.com/diversion-2/hNFKL35i0RPRSCiK/images/branching-and-merging-branch-graph-view.png?fit=max&auto=format&n=hNFKL35i0RPRSCiK&q=85&s=b42de3ce54698a45486a2d79ff8fc0d2" alt="The branch graph view" width="120" height="540" data-path="images/branching-and-merging-branch-graph-view.png" />
  </Step>

  <Step title="グラフを操作する">
    グラフは、すべてのブランチとコミットのインタラクティブな可視化を表示します。パンやズームでグラフ内を移動できます。

    <img src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/branching-and-merging-branch-graph.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=d26d973babadabc658047a493508088e" alt="Branch graph" width="873" height="352" data-path="images/branching-and-merging-branch-graph.png" />
  </Step>

  <Step title="グラフからアクションを利用する">
    グラフ内の任意のコミットやブランチを右クリックすると、コンテキストメニューが開きます。ここから、他の場所でも利用できるのと同じアクション(ブランチの作成、コミットのチェリーピック、マージなど)にアクセスできます。

    <img src="https://mintcdn.com/diversion-2/byT8FECKa2zLvaOH/images/branching-and-merging-branch-graph-context-menu.png?fit=max&auto=format&n=byT8FECKa2zLvaOH&q=85&s=efed5c2abcaa780f25f650632f2a82eb" alt="Branch graph context menu" width="853" height="347" data-path="images/branching-and-merging-branch-graph-context-menu.png" />
  </Step>
</Steps>

ブランチがたくさんある場合、これは互いの関係を把握するのに最適な方法です。

### 覚えておくべき重要事項

1. どのブランチで作業する場合も、メインブランチでの作業と同じです。変更、コミット、同期 — すべて同じです。
2. ブランチはリポジトリ内の誰にでも見え、誰でも任意のブランチに切り替えることができます。
3. ブランチにコミットされた変更は、同じブランチにいるチームメンバーだけが利用できます。
4. プルやフェッチは不要です。チームメイトがあなたと同じブランチにコミットすると、ワークスペースは自動的に更新されます。自動更新の仕組みと制御方法の詳細については、[同期](/ja/concepts/syncing) を参照してください。

### ブランチの管理

#### ブランチの削除

ブランチが不要になった場合は、削除できます。デフォルトブランチは削除できないことに注意してください。

デスクトップアプリのブランチ一覧で、削除したいブランチを右クリック(またはメニューアイコンをクリック)し、「Delete」を選択します。

<img src="https://mintcdn.com/diversion-2/byT8FECKa2zLvaOH/images/branching-and-merging-branch-delete-menu.png?fit=max&auto=format&n=byT8FECKa2zLvaOH&q=85&s=4d7739fee480a6947816a9a6cbd4c121" alt="Delete branch menu option" width="1038" height="542" data-path="images/branching-and-merging-branch-delete-menu.png" />

**現在いるブランチを削除するとどうなりますか?** 現在表示しているブランチを削除すると、リポジトリのメインページにリダイレクトされます。削除されたブランチをチェックアウトしていたワークスペースは、**切り離された状態(detached state)** のままになります — 現在のファイルとコミットされていない変更は保持されますが、どのブランチにも関連付けられなくなります。作業を続けるには、ワークスペースから別のブランチに切り替えます。

CLI での操作については、ブランチの削除やその他のオプションについて [branch コマンド](/ja/cmd-ref/branch) を参照してください。

#### ブランチの名前変更

デスクトップアプリからブランチの名前を変更できます。これは Git と同期されているリポジトリではサポートされていません。

ブランチ一覧で、名前を変更したいブランチを右クリック(またはメニューアイコンをクリック)し、「Rename」を選択します。新しい名前を入力して「Rename」をクリックします。

CLI での操作については、ブランチの名前変更について [branch コマンド](/ja/cmd-ref/branch) を参照してください。

#### デフォルトブランチの設定

デフォルトブランチは、新しいワークスペースを作成する際のベースとなるブランチです。デフォルトブランチを変更できるのは管理者のみで、このオプションはデスクトップアプリでのみ利用可能です。

ブランチ一覧で、デフォルトに設定したいブランチを右クリック(またはメニューアイコンをクリック)し、「Set as default branch」を選択します。このオプションは、リポジトリの管理者である場合にのみ表示されます。

このアクションに CLI で相当するものはありません。

## マージ

ブランチでの作業が終わったら、メインブランチにマージすることができます。
マージは、一方のブランチのすべての変更を別のブランチに適用します。

### マージの方法

デスクトップアプリでブランチセレクタを開き、**Branches** タブでマージしたいブランチを見つけて、そのメニューからマージオプションを選択します。

<img src="https://mintcdn.com/diversion-2/Ro_2EfA8JfapE5By/images/branching-and-merging-merge.png?fit=max&auto=format&n=Ro_2EfA8JfapE5By&q=85&s=d67f24fee251449bf3311518cf494a31" alt="Merge branches" width="544" height="356" data-path="images/branching-and-merging-merge.png" />

競合がなければ、ブランチ履歴に新しいマージコミットが表示されます。

<img src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/branching-and-merging-a-new-merge-commit.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=e5afc9f565ea0145a7a0d1677e718806" alt="A successful merge commit" width="284" height="84" data-path="images/branching-and-merging-a-new-merge-commit.png" />

CLI での操作については、ブランチのマージについて [merge コマンド](/ja/cmd-ref/merge) を参照してください。

### マージ競合

場合によっては、ブランチで行った変更が、他の誰かが別のブランチで行った変更と競合することがあります。
これらのブランチをマージしようとすると、これらの競合する変更をどう処理するか決める必要があります。

デスクトップアプリで、競合する変更があり [マージの方法](#マージの方法) の手順に従うと、マージ成功コミットの代わりに競合ファイルを示す画面が表示されます。

<img src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/branching-and-merging-conflict-window.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=a8b5b7915628990b6a56bba3f9b85b95" alt="The merge conflict window" width="2551" height="1345" data-path="images/branching-and-merging-conflict-window.png" />

競合ウィンドウは 4 つの部分で構成されています:

1. 競合する変更のあるファイルの一覧。
2. 一覧の各ファイルごと:
   1. 受信側のファイル。これはマージ元のブランチにあるファイルの読み取り専用バージョンです。
   2. 現在のファイル。これはマージ先のブランチにあるファイルの読み取り専用バージョンです。
   3. 結果のファイル。これは競合を解決した後にファイルがどうなるかを示します。編集可能です。

競合を解決するには、どの変更を残し、どれを破棄するかを決める必要があります。受信版、現在版、またはその組み合わせを選択できます。
また、前述のとおり、結果ファイルを直接編集することもできます。

多くのファイルに同じ選択を適用したい場合は、チェックボックスで選択して下部のボタンを使用できます。

完了したら、コミットメッセージを入力して「Commit」を押します。

CLI でマージ競合を解決する方法については、[マージ競合の処理 (CLI)](/ja/core-concepts/branching-merging#マージ競合の処理) を参照してください。

#### テキストではないファイルのマージ

画像、3D モデル、スプライトシート、アニメーションなどのテキストではないファイルはマージできません。このマージプロセスが機能するのは、テキストファイルが人間可読で、行ごとに比較できるためです。
テキストではないファイルでマージ競合が発生した場合、選択肢は 2 つあります:

1. これらのファイルをマージできる特定のツールがある場合、それを使って競合を解決できます。一例は [Unreal Engine の組み込みマージツール](/ja/unreal/ue-plugin-merge-conflicts) で、[プラグイン](/ja/unreal/unreal-engine-plugin) がある場合に使用できます。
2. 片方のバージョンを選んで残し、もう片方を破棄する。

### マージ競合の警告

Diversion には、他のチームメンバーが編集していてマージ競合を引き起こす可能性のあるファイルを警告する機能があります。
ファイルにマージ警告アイコンが表示されている場合、それをクリックすると誰がそのファイルを編集しているかの情報が得られます。マージ競合を防ぐため、作業前に必ず連絡を取り合いましょう。
前述のとおり、これはテキストではないファイルで作業する際には特に重要です。

<img src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/branching-and-merging-merge-warning-icon.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=b7ff43301f112a97f209df9ac40005d7" alt="The merge warning icon" width="468" height="92" data-path="images/branching-and-merging-merge-warning-icon.png" />

#### 多くのファイルに警告アイコンが表示されるのはなぜですか?

警告アイコンは、閲覧しているワークスペースだけでなく、リポジトリ上のいずれかのワークスペースで現在変更中(未コミット)のファイルを反映しています — それがコラボレーターのものであれ、あなた自身の別のものであれ。一度に大量のファイルに表示される場合、通常の原因は、それらのワークスペースの一つが大量の未コミット変更を保持していることです。そこにあるすべての変更ファイルは、そのブランチにいる全員に対してフラグが立てられます。

警告は変更を保持しているワークスペースの名前を教えてはくれませんが、アイコンをクリックすると、どのユーザーがそのファイルを編集しているかが表示されます。特定するには、そのユーザーが自分の [ワークスペース](/ja/basic/workspace-management) それぞれで未コミットの変更を確認するか、リポジトリのオーナー/管理者がそのユーザーが所有するリポジトリ内のすべてのワークスペースを確認することができます(参照: [ワークスペースの表示](/ja/basic/repo-management#ワークスペースの表示))。見つかったら、そのワークスペースの変更をコミットまたはリバートするか、不要であれば削除してください。
