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

# アプリをプルする

> サーバーから最新のアプリファイルをプルする

[BRICKS](https://bricks.tools) サーバーからローカルプロジェクトにアプリケーションファイルの最新バージョンをプルします。

## サーバーからファイルをプルする

1. チャットパネルのヘッダーにある**アクション** > **プル**をクリックする
2. 確認ダイアログの警告を確認する
3. **プル**または**強制プル**をクリックする

ダイアログには 2 つのモードがあります。**プル**はデフォルトの安全な方法で、**強制プル**は従来の上書き型フローです。

### プル（デフォルト）

**プル**は一時的な `BRICKS_PROJECT_try-pull-application` ブランチ（モジュールの場合は `…try-pull-module`）を経由して、サーバーの変更を `main` ブランチに取り込みます。

1. 未ステージの変更があると実行を拒否します。事前に commit または stash してください。
2. `HEAD` がすでにサーバーの commit と一致している場合は「Already up to date」で中止します。
3. 前回同期した commit（下記の**同期マーカー**を参照）を起点に try-pull ブランチを作成し、新しいファイルを適用して commit します。
4. `main` をチェックアウトし、3-way マージで try-pull ブランチを取り込みます。
5. マージ後に try-pull ブランチを削除するため、サイドブランチを自分で管理する必要はありません。
6. 新しい `HEAD` を次回同期の起点として記録します。

### マージ競合の解決

マージで競合が発生した場合、CTOR は競合マーカーをそのまま `main` 上に commit し（pre-commit フックが中間状態を拒否しないよう `--no-verify` を使用）、ダイアログには**プル警告**が表示されます。続いて自動コンパイルバナーが競合マーカーを typecheck エラーとして表示するので、`main` 上で 1 ファイルずつ解決してください。修正が進むにつれてバナーは順次クリアされます。

### 同期マーカー

`.bricks/.last-pushed-commit` は clone ごとに独立したファイルで、サーバーと最後に同期した commit を記録します。CTOR は deploy、Update Config、非強制プルが成功するたびにこのファイルを更新し、次回のプルではこれをマージベースとして優先します。マーカーが存在しない場合（クローン直後など）は、サーバーの最新 commit id にフォールバックします。両方ともローカル履歴に存在しない場合は try-pull ブランチを `HEAD` から作成し、3-way マージは同じ結果に収束します。

### 強制プル

**強制プル**は現在のブランチに留まり、未ステージの変更を自動 commit（メッセージは `chore(force-pull): saved unstaged changes before pull`）してから、ローカルファイルをサーバー版で上書きします。同期マーカーは変更しません — マーカーは deploy、Update Config、非強制プルのフローが管理します。

<Warning>
  **強制プル**はサーバーバージョンと競合するローカルの変更を上書きします。ローカルの変更を保持する必要がない場合のみ使用してください。
</Warning>
