跳到主要內容
← 回找觀念
第五架構:防禦控制與 Git 安全網|第 4 篇

別讓 AI 在主線上試錯:branch 與 worktree

AI 做新功能要試錯好幾次,直接在 main 上改,專案就一直處於半壞狀態。開一條 branch 讓它在裡面亂,壞了整條刪掉。要同時開兩個 AI 做不同的事,用 worktree 給每個一個實體資料夾;Claude Code 一個指令就能開。

2026-08-01 發布 · 2026-09-16 更新 · 作者整理:Lucas

很多人讓 AI 寫程式的方式是:打開專案,直接叫它改。改的就是主線,Git 裡叫 main 的那條,代表「正式的、能動的版本」。

問題是 AI 做複雜功能不會一次做對,它要試錯好幾輪。這段期間你的專案一直處於半壞狀態:同事想看,看到的是壞的;線上突然有個錯字要緊急修,你的主線連編譯都過不了。

解法是 Git 最基本的兩個工具。我用辦公桌來比喻:

Branch vs Worktree

隔離版本線Branch

同一個資料夾切換不同分支。

隔離工作桌Worktree

不同資料夾同時開多個分支。

branch:讓 AI 在隔離的時空裡亂,主線毫髮無傷

開始做新功能之前,第一句話永遠是:「從 main 開一條新的 branch,叫 feature-登入。」

你可以把專案資料夾想成一張桌子,branch 是桌子底下的時空切換鈕。切到 main,桌上是穩定的版本;切到 feature-登入,桌上瞬間變成開發中的草稿。同一個資料夾,不同的內容。

AI 在 branch 裡怎麼試錯都不會碰到 main。做好了,把 branch 合併回 main;做壞了、救不回來,整條 branch 刪掉,切回 main,專案跟開工前一模一樣。這是最便宜的安全網,開一條 branch 的成本接近零。

我的習慣是一個功能一條 branch,名字寫清楚在做什麼。做完就合併、刪掉,不留一堆舊分支。

worktree:第二張實體桌子,讓兩個 AI 同時工作

branch 有一個物理限制:你只有一個資料夾。同一時間,桌上只能顯示一個時空。

這代表如果你想同時開兩個 AI,一個做資料庫、一個做畫面,它們會搶同一個資料夾:A 切到它的 branch,B 看到的檔案全變了。兩個 AI 在同一張桌子上工作,結果是一團亂。

Git 的解法叫 worktree:從同一個倉庫,在硬碟上再長出一個實體資料夾,各自對應不同的 branch。兩個資料夾底層共用同一份 Git 歷史,但檔案是分開的。兩張桌子,各坐一個 AI,互不干擾。

Claude Code 把這件事包成一個指令:claude --worktree feature-登入。它會建一個 worktree、切到那條 branch、在裡面開一場對話。開第二個終端機、換個名字再跑一次,就是第二個平行的 AI。官方文件補了一個前提:倉庫要至少有一個 commit,全新的空倉庫會失敗。

代價也要說。worktree 是實體資料夾,每一個都要各自安裝套件(node_modules 那類)、各自跑建置。兩個還好,開五個你的硬碟和記憶體會有感覺。而且平行工作之後要合併,兩個 AI 如果改了同一個檔案,合併時會衝突,還是要人來判斷留哪邊。所以平行的前提是兩件事碰的檔案盡量不重疊,to-tickets(動工前先被拷問那篇)的「標明被誰擋住」就是在幫你判斷哪些票可以同時開。

動手做

目前 AI 都直接改 main 的,把這段加進常駐檔或每次的任務開頭:

規則:任何修改開始之前,先確認目前在 main,然後從 main 開一條新的 branch,名字用「feature-功能名」或「fix-問題名」。告訴我你開了什麼分支。做完、測試通過之後問我要不要合併回 main;我說不要就把整條分支刪掉。不准直接在 main 上改。

想同時跑兩個 AI 的,第一個終端機:claude --worktree feature-db,交辦資料庫的工作。第二個終端機:claude --worktree feature-ui,交辦畫面的工作。兩邊做完各自 commit,再回主資料夾合併。做完記得清掉用完的 worktree,官方有專門一頁講清理。

想確認自己現在在哪條 branch,叫 AI「告訴我現在在哪個 branch」,或看終端機提示。如果只有 main,而你已經讓它改過東西,那些修改都直接進了主線,下次開始用上面那段規則。

做對了的樣子:AI 動手前你看到它說「已從 main 開分支 feature-xxx」;你曾經整條刪掉一個做壞的分支,main 沒事;平行跑兩個 AI 時,各自在不同的資料夾,沒有互相蓋檔;合併時如果衝突,你知道那是兩邊改了同一個檔,不是「Git 壞了」。

開工第一句話:從 main 開一條 branch,壞了整條刪,main 沒事。branch 是同一張桌子切時空,worktree 是再搬一張桌子。兩個 AI 平行各給一個 worktree,Claude Code 一個指令就能開;但前提是兩件事碰的檔案不重疊,否則合併時你要當裁判。

站內延伸

來源: git-worktree(官方文件);Claude Code:Common workflows — Run parallel sessions with worktrees(claude --worktree <name>、需要至少一個 commit、清理見 Worktrees 頁)。

第五架構 · 第 4 篇 · 另開一條線

別讓它在主線上試錯,
壞了整條丟掉

什麼時候看這張:它做新功能要試好幾輪,你的專案整段時間都是半壞的。

先另開一條從正式版分出讓它在裡面亂主線碰不到好了才併回壞了整條刪
  • 另開一條線幾乎不花成本,這是最便宜的安全網
  • 同時跑兩個它,就要各給一個實體資料夾
  • 兩邊改到同一個檔,合併時還是要你當裁判

第一個動作在任務開頭加一句:動手前先從正式版另開一條線,並告訴我叫什麼。一句話,貼進常駐規則就好。

2026-09-16 查證稜線 Ridgeline
← 看更多找觀念文章
取得 AI 實戰工具與更新

之後會不定期整理:新方法、指令包(Prompt Pack)、Checklist 與模板。免費、無廣告;送出後會收到一封確認信,點了連結才算訂閱成功,之後每封信都附一鍵退訂。