> ## 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.

# .dvignore ファイル

> リポジトリに不要なファイルを安全に無視する

`.dvignore` ファイルは、変更を追跡するときに無視すべきファイルとディレクトリを指定するために Diversion で使用されます。これにより、ビルド成果物、一時ファイル、キャッシュデータなど、不要なファイルや自動生成されるファイルを除外して、リポジトリをクリーンに保つのに役立ちます。

### 目的

`.dvignore` ファイルを使用することで、関連するファイルのみがリポジトリにコミットされるようになります。これにより、以下が実現します:

* 不要なファイルによる混乱を防ぐ。
* 大きなファイルや頻繁に変更される一時ファイルを追跡しないようにして、パフォーマンスを向上させる。
* 機密ファイルや自動生成ファイルのコミットを避ける。

`.dvignore` はリポジトリが **何を追跡・保存するか** を決定しますが、[選択同期](../advanced/selective-sync) は、それらの既に追跡されているファイルのうち、ワークスペースが実際にダウンロードするものを制御します。

### ファイル構造

`.dvignore` ファイルは、除外するファイルまたはディレクトリを定義するパターンで構成されます。通常、以下のルールに従います:

* `#` で始まる行はコメントとして扱われます。ハッシュで始まるパターンには、最初のハッシュの前にバックスラッシュ `\` を付けてください。
* 同じ行にコメントとパターンを混在させないでください。**混在させるとパターンが効かなくなります。**
* ワイルドカード `*` は任意の文字列に一致します (ただし `**` とは異なり、`/` の境界を超えません)。
* `/` で終わるディレクトリは、その中のすべてのコンテンツを無視します。
* 否定 `(!)` は、他のパターンで無視される可能性のあるファイルを明示的に含めます。

#### 高度なルールセマンティクス

* **ルート固定 `/`** – 先頭のスラッシュはリポジトリルートからマッチします。付いていない場合、パターンは任意の場所にマッチできます。
* **二重アスタリスク `**`** – ディレクトリ境界を越えて一致します (例: `Assets/**/config.ini`)。
* **否定の優先順位** – `!pattern` は、先行するルールにより祖先の 1 つが無視されている場合にのみ、パスを再び含めます。

```text theme={null}
Saved/*
!Content/**
```

`Saved/Windows/Content/file.txt` -> やはり無視されます

* **ネストされた `.dvignore` ファイル** – ネストされたディレクトリのルールは親ディレクトリのルールをオーバーライドします。

> **Git 互換性**: Diversion は Git の `.gitignore` と同じパターンマッチセマンティクスを (ネストされた ignore ファイルのサポートを含めて) 実装しているため、Git からコピーされたソースツリーはそのまま同じように動作します。

<Note>
  <strong>重要:</strong> Diversion は既存の <code>.gitignore</code> ファイル (ルートおよびネスト) を <code>.dvignore</code> ファイルと同様に扱うため、Git リポジトリを Diversion に移行すると、元の ignore ルールが保持されます。<br />
  同じディレクトリに <code>.dvignore</code> と <code>.gitignore</code> の両方が存在する場合、それらのパターンはマージされ、<strong><code>.dvignore</code> が優先されます</strong> (last-match-wins)。これにより、<code>.gitignore</code> を編集することなくルールをオーバーライドできます。<br />
  Unreal Engine のソースリポジトリを Git から移行する場合など、既存の <code>.gitignore</code> ファイルを削除し、
  ニーズに合わせたカスタム ignore ファイルに置き換えたい場合があります。
</Note>

#### V1 マッチャーを有効にする

Diversion の ignore ファイルマッチングはバージョン管理されています。デフォルトはほとんどのプロジェクトでうまく機能し、**V1** はオプトインのアップグレードで、そのパターンマッチングは Git の `.gitignore` ルールにさらに近く従います — last-matching-rule-wins の優先順位、パスを再包含する否定、ルート固定パターン、ディレクトリ境界を越える `**`、ネストされた ignore ファイルなど。有効にするには、リポジトリルートの `.dvignore` の **最初の非空行** として、パターンの前に (先頭の空白行は問題ありません) 以下のディレクティブを追加します:

```
# dv-ignore-version: 1
```

ディレクティブが存在しないか、最初の非空行にない場合、Diversion はデフォルトのマッチャーを使い続けます。

ゲームエンジンプロジェクトのために、Diversion は各エンジンに合わせたデフォルトの **.dvignore** を出荷しています。以下のスニペットは高レベルの例示です。実際のルールは、リポジトリで生成された **.dvignore** で確認してください。

#### Unreal

```
# Unreal Engine build files
Build/*
# Saved game states and config files
Saved/*
# Compiled intermediate files
Intermediate/*
# Editor cache files
DerivedDataCache/*
```

#### Unity

```
# Unity temp folder
.utmp/
# Unity Library
/[Ll]ibrary/
# Temporary files
/[Tt]emp/
# Object files
/[Oo]bj/
# Build directories
/[Bb]uild/
/[Bb]uilds/
# Log files
/[Ll]ogs/
# User-specific settings
/[Uu]ser[Ss]ettings/
# Memory captures
/[Mm]emoryCaptures/
# Recordings
/[Rr]ecordings/
```

IDE ファイル、Addressables、Visual Scripting などを含む完全な Unity `.dvignore` については、[Unity ベストプラクティス](/ja/unity/unity-best-practices) を参照してください。

#### Godot

```
# Godot internal directory
.godot/
# Import cache folder
.import/
# Export settings
export.cfg
# Export presets
export_presets.cfg
# Auto-generated translation files
*.translation
```

プロジェクトのニーズに応じて `.dvignore` ファイルを修正できます。追加のツールやフレームワークを扱う場合は、それらのキャッシュや一時ディレクトリを追加してリポジトリ管理を改善することを検討してください。

たとえば、カスタムビルドシステムを使う場合、次のように追加できます:

```
/build_output/
/temp_build_files/
```

### 既にコミットされたファイルを無視する

<Note>
  重要: 既にコミットされているファイルとディレクトリは、.dvignore では無視されません。

  1. コミット済みのパスを無視したい場合は、まず削除して削除をコミットする必要があります。そのパスの内容が自動生成できない場合は、別の場所にバックアップし、削除をコミットした後に戻してください。
  2. 削除をコミットする前にコラボレーターにコピーをバックアップするよう通知してください。そのコミットで更新すると、彼らのコピーも削除されるためです。
  3. 自動生成されるパスの例: ビルド成果物と中間ファイル、自動生成コード。
  4. 自動生成されないパスの例: 認証情報ファイル、ローカル設定ファイル。
</Note>

<Note>
  子孫の 1 つに対する **否定** ルールがある場合、空のディレクトリは無視されません。

  ディレクトリの子孫の 1 つに **否定** ルールがある場合、その子孫のファイルがまだ存在しなくても、Diversion はそのディレクトリを **トラック** し続けます。

  ```
  Build/*
  !Build/app.dll
  ```

  `!Build/app.dll` が将来のファイル候補を再包含するため、`Build/` ディレクトリ自体がトラックされます (そして `app.dll` が現れるまで空として表示されます)。
  `Build/` を完全に無視したい場合は、否定行 (`!Build/app.dll`) を削除してください。
</Note>
