把 Git 工作樹變成隨手可切的指令:worktrunk 0.81
摘要
開樹、切換、合併、清理收成幾條指令,每個代理各佔一棵工作樹。worktrunk 是 Rust 寫的開源命令列工具,MIT 與 Apache 雙授權,三個系統都能跑。
推薦- 軟體名稱
- worktrunk
- 版本
- 0.81
- 收費
- 免費
- 開源
- 開源
- 作業系統
- WindowsmacOSLinux
- 更新時間
- 2026-11-10 23:00
worktrunk 是用 Rust 寫的命令列工具,專門管 Git 的工作樹。它把「開一棵工作樹、切過去、做完合併、再清掉」這一串動作收成幾條指令,還能按專案設定掛鉤,讓新目錄自動裝相依套件、起服務。專案首頁講得很直接:為平行跑代理的工作流而做。同時開三四個編碼代理改同一個儲存庫的人,最用得上。Windows、macOS 與 Linux 都能跑,目前版本 0.81。

工作樹為什麼需要一條專門指令
Git 的工作樹本身不複雜:一個儲存庫可以同時把多個分支檢出到不同目錄,互不干擾,也不必來回 stash。麻煩在操作。原生命令要記路徑、記分支名,切過去還得自己 cd;目錄攢到五六個之後,哪個分支改到哪一步、有沒有落後主分支,全靠腦子記。
更現實的問題是代理。讓一個代理在儲存庫裡改程式,它會把工作目錄弄成中間狀態;再開第二個,兩邊互相踩。給每個代理分一棵獨立工作樹是最乾淨的辦法,但手工開樹、手工收拾,一天下來光管目錄就夠煩。
wt switch:切的是目錄,不是分支
wt switch 後面接分支名,分支不存在就順手開一棵工作樹,已經存在就直接切過去。跟原生命令的差別在 shell 整合:安裝完成後,切換會把終端機的工作目錄一起帶過去,不必再敲一次 cd。它還能帶一條指令一起跑,指令後面用雙橫線接參數,於是「開樹、進目錄、起代理工作階段」可以合成一步。

新樹裡的相依套件與設定檔是空的,這由掛鉤補上。專案層設定可以寫好一段啟動動作,例如裝套件、初始化資料庫、起本機服務,每次開新樹自動執行。掛鉤跑之前會問您要不要信任這個專案,避免 clone 一個儲存庫下來就替您執行指令。
wt list:一張表看清所有樹
指令敲下去,出來的是表格。每一列對應一棵工作樹,列出分支名、工作區狀態、提交編號、相對主分支領先或落後多少、與遠端的差距、最後提交時間與提交訊息。剛建好還沒載入完的樹會標著載入中,幾秒後補齊。

狀態欄能看出未提交的改動、衝突、正在合併,不必逐個目錄去看。領先落後欄一眼掃完哪棵樹落後主分支、哪棵已經推到遠端。提交訊息欄配合自動生成的提交說明,看一行就知道這棵樹在做什麼。
合併與清理,也有固定動作
做完事要收尾。wt merge 把當前樹的改動提交、變基到目標分支、快進合併,然後把這棵工作樹與分支一起清掉,整個過程在背景完成,不中斷您繼續敲指令。它也支援產生合併提交,適合需要保留分支痕跡的儲存庫。
不要了就 wt remove。被刪掉的樹不會立刻消失,而是先進 .git/wt/trash 這個回收位置,誤刪還有得救。攢久了用 prune 清理:分支已經併進預設分支的樹會被刪掉,沒合併的、剛開不久的會跳過,還能設一個最短存活時間來控制尺度。
讓每個代理住進自己的目錄
平行跑代理時,最礙事的是那些被 git 忽略的檔案:node_modules、建置產物、本機環境變數。新開一棵樹,這些東西全是空的,代理第一步就得花時間重裝。wt 提供複製忽略檔案的能力,把來源樹裡這些目錄搬過去,並對埠號、資料庫名稱一類會打架的值做改寫,讓兩棵樹上的本機服務不會搶同一個埠。

worktrunk 的授權是 MIT 與 Apache 2.0 雙授權,原始碼在 GitHub 上,說明站也齊。它不綁某一家代理:任何能在終端機裡啟動的編碼工具,都能透過那條「帶指令切換」的參數塞進新樹裡。
值不值得用
只維護一條分支的人不需要它,原生 git 夠用。真正吃得上的是兩類場景:同時推進幾條互不相干的功能線,或者讓兩三個代理平行改同一個儲存庫。前者省的是目錄管理的時間,後者省的是互相覆蓋之後的排查時間。
代價是要接受一層新的指令。wt 自己有一整套子命令與設定,掛鉤寫錯了也會讓新樹起不來;它還把 shell 整合當成前提,不裝那一步,切換目錄的體驗就退回手工。
worktrunk 做的事情很小:把 Git 工作樹從「知道有這麼個功能」變成「每天都會用」。它沒有發明新機制,只是把開樹、看狀態、合併、清理這四件事做成了順手的指令,再加一層掛鉤讓新目錄能自己站起來。平行跑代理的工作流裡,這點順手很值錢。