> ## 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. 點選**拉取**或**強制拉取**

對話框提供兩種模式。**拉取**是預設的安全路徑；**強制拉取**則是舊版的原地覆寫流程。

### 拉取（預設）

**拉取**會藉由暫時的 `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 merge）的方式把 try-pull 分支併回去。
5. 合併後刪除 try-pull 分支，您不需要自行管理側分支。
6. 紀錄新的 `HEAD` 作為下次同步的起點。

### 解決合併衝突

當合併產生衝突時，CTOR 會把衝突標記直接 commit 在 `main` 上（使用 `--no-verify` 以避免 pre-commit hook 拒絕此中間狀態），對話框則會顯示**拉取警告**。接著自動編譯橫幅會把衝突標記回報為 typecheck 錯誤——直接在 `main` 上逐一修正，橫幅會隨著您修好的檔案逐步清除。

### 同步標記

`.bricks/.last-pushed-commit` 是每個 clone 各自獨立的檔案，紀錄您最近一次與伺服器同步的 commit。每次成功的 deploy、Update Config 或非強制拉取後，CTOR 都會更新此檔案，並在下一次拉取時優先使用它作為合併基準。當標記不存在時（例如剛 clone 完），CTOR 會回退至伺服器的最近 commit id；若兩者都無法在本機歷史中找到，則會直接從 `HEAD` 建立 try-pull 分支，三方合併會收斂到相同的結果。

### 強制拉取

**強制拉取**會留在目前的分支、自動 commit 未暫存的變更（commit 訊息為 `chore(force-pull): saved unstaged changes before pull`），並以伺服器版本覆寫本機檔案。它不會更動同步標記——該標記由 deploy、Update Config 與非強制拉取流程負責維護。

<Warning>
  **強制拉取**會覆寫任何與伺服器版本衝突的本機變更。僅在不需要保留本機修改時才使用。
</Warning>
