# ワークスペースの分離 (/ja/docs/verdent-manager/advanced-features/workspace-isolation)

> Verdent が git worktree で並行するコード変更を分離する仕組み



ワークスペースの分離は、git worktree を使って、並行するコード変更をファイルシステムレベルで分離します。ワークスペースには、それぞれ独自のディレクトリ、ブランチのチェックアウト、ファイル、ステージング状態があります。

<Note>
  現在の Verdent Desktop インターフェースでは、手動でのワークスペース作成は提供されていません。**New Workspace** ボタン、キーボードショートカット、**Duplicate to New Workspace** は非表示です。レスポンスを複製すると、新しいタスクは現在のワークスペース内に作成されます。
</Note>

***

## 学べること [#学べること]

* ワークスペースの分離が競合を防ぐ仕組み
* git worktree が分離を実現する仕組み
* Base Workspace とワークスペースの違い
* 既存のワークスペースと Verdent が管理するワークスペースがインターフェースにどう表示されるか
* ワークスペース管理のベストプラクティス

***

## ワークスペースの分離とは [#ワークスペースの分離とは]

Verdent が別々のワークスペースで作業を実行すると、ある worktree の変更は、別の worktree のファイルやステージング状態を変更しません。これにより、並行した実装とレビューをより安全に行えます。

### 仕組み [#仕組み]

| レイヤー       | 仕組み                                 |
| ---------- | ----------------------------------- |
| **ディレクトリ** | 各ワークスペースは分離されたディレクトリです              |
| **ブランチ**   | 各ワークスペースには独自のブランチチェックアウトがあります       |
| **ファイル**   | あるワークスペースでのファイル変更は、他のワークスペースに影響しません |
| **ステージング** | 各ワークスペースには独自のステージング領域があります          |

### メリット [#メリット]

<CardGroup cols="2">
  <Card title="干渉なし" icon="shield-halved">
    ファイル変更は別々の worktree ディレクトリ内に留まります
  </Card>

  <Card title="安全な実験" icon="flask">
    安定したコードに影響を与えずにリスクのある変更を試せます
  </Card>

  <Card title="明確な比較" icon="code-compare">
    git diff を使って、ワークスペース間でアプローチを比較できます
  </Card>

  <Card title="選択的なリベース" icon="code-merge">
    信頼できる結果だけをリベースできます
  </Card>
</CardGroup>

***

## Base Workspace とワークスペース [#base-workspace-とワークスペース]

### Base Workspace [#base-workspace]

Base ワークスペースは元のリポジトリチェックアウトで、デフォルトの開始地点として機能します。

| 特性        | 説明                        |
| --------- | ------------------------- |
| **場所**    | 元の git clone または init の場所 |
| **主ブランチ** | 通常は main または開発ブランチ        |
| **参照点**   | 実験的な作業を比較するための基準          |

**Base を使う場面:**

* 分離が不要な素早い変更
* 実験的な作業を比較するための参照点
* 変更を直接 main ブランチに入れたい場合
* 並行実行が不要な単純なタスク

### ワークスペース [#ワークスペース]

ワークスペースは、git worktree を使って作成される分離された作業環境で、独立したブランチチェックアウトとファイル状態を持ちます。

Verdent は、対応しているワークフローでコード変更の分離が必要な場合にワークスペースを使用できます。既存のワークスペースはプロジェクトとの関連付けを維持し、複数のタスクを含められます。

***

## 既存のワークスペースを扱う [#既存のワークスペースを扱う]

すでにプロジェクトに属しているワークスペースは、Projects パネルでそのプロジェクトにグループ化されたまま表示されます。ワークスペースを選択すると、そのタスクとファイル状態を確認できます。

* 同じワークスペース内のタスクはファイルを共有しますが、会話コンテキストは別々に保持されます。
* 別のワークスペースに切り替えると、アクティブな worktree とブランチのコンテキストが変わります。
* レスポンスを複製すると、複製されたタスクは現在のワークスペース内に残ります。
* 必要な作業をコミット、リベース、または別の方法で保存してから、ワークスペースを削除してください。

***

## ワークスペースの変更をリベースする [#ワークスペースの変更をリベースする]

ワークスペースでの変更を main ブランチに統合する準備ができたら、次の手順を実行します。

### Verdent UI を使う [#verdent-ui-を使う]

<Steps>
  <Step title="作業を完了する">
    ワークスペースで作業を完了します
  </Step>

  <Step title="変更を確認する">
    中央のパネルで **Task Changes** を選択し、すべての変更を確認します
  </Step>

  <Step title="main ブランチにリベースする">
    Workspace Bar で **Workspace Actions → Rebase to main branch** を選択します
  </Step>

  <Step title="競合を解決する">
    プロンプトが表示された場合は競合を解決します
  </Step>

  <Step title="検証する">
    確定する前に変更を確認します
  </Step>
</Steps>

### ワークスペースを最新に保つ [#ワークスペースを最新に保つ]

**Workspace Actions → Sync with main branch** を使って、main ブランチの最新変更をワークスペースに取り込みます。これにより、リベース時に大きな競合が発生しにくくなります。

***

## ベストプラクティス [#ベストプラクティス]

### ワークスペースのメンテナンス [#ワークスペースのメンテナンス]

| 実践                      | 理由                   |
| ----------------------- | -------------------- |
| **リベース済みのワークスペースを削除する** | ディスク容量を解放できます        |
| **放棄した実験を削除する**         | ワークスペース一覧を管理しやすく保てます |
| **ワークスペース数を適切に保つ**      | システムリソースには限りがあります    |

### Git の衛生管理 [#git-の衛生管理]

| 実践                  | 理由                                 |
| ------------------- | ---------------------------------- |
| **こまめにコミットする**      | 切り替える前に作業中の内容をコミットします              |
| **小さくコミットする**       | 小さなコミットのほうが cherry-pick しやすくなります   |
| **定期的に base と同期する** | ワークスペースが main ブランチから大きく乖離しないようにします |
| **競合の複雑さを抑える**      | 定期的な統合により、大きな競合を防げます               |

***

## FAQ [#faq]

<AccordionGroup>
  <Accordion title="各ワークスペースはどのくらいのディスク容量を使いますか">
    各ワークスペースは作業ファイルを複製しますが、`.git` ディレクトリは共有します。使用容量は、おおよそワークスペースごとのプロジェクトサイズと同じです。大規模なプロジェクトで多数のワークスペースを並行して使うと、多くのディスク容量を使用します。
  </Accordion>

  <Accordion title="ワークスペースを削除できますか">
    はい。Verdent からワークスペースを削除します。これによりディレクトリは削除されますが、ブランチ上のコミット済みの作業は保持されます。
  </Accordion>

  <Accordion title="新しいワークスペースを作成するにはどうすればよいですか">
    現在の Desktop インターフェースでは、手動作成は利用できません。**New Workspace** の項目とショートカットは非表示です。Verdent は、対応している分離ワークフローのために内部的にワークスペースを引き続き使用できます。
  </Accordion>

  <Accordion title="ワークスペースを削除すると未コミットの変更はどうなりますか">
    ワークスペースを削除すると、未コミットの変更は失われます。ワークスペースを削除する前に、必ず変更をコミットまたは stash してください。
  </Accordion>

  <Accordion title="ワークスペースを base ワークスペースに変換できますか">
    直接変換することはできませんが、ワークスペースのすべての変更を main ブランチにリベースしてから、ワークスペースを削除できます。ブランチ履歴は保持されます。
  </Accordion>

  <Accordion title="worktree はすべての git ホスティングサービスで使えますか">
    はい。Git の worktree は標準の git 機能です。GitHub、GitLab、Bitbucket、その他の git ホスティングサービスで使用できます。
  </Accordion>
</AccordionGroup>
