你是小阿巴,正在用 AI 幫你開發(fā)一個《美吉外賣》項目。
好家伙,任務有點多啊!
首頁商家列表:展示附近的外賣商家
搜索功能:搜索想吃的菜品或商家
個人中心頁面:查看訂單歷史、修改收貨地址
你靈機一動:不如讓 3 個 AI 同時幫我寫代碼,效率豈不是直接翻 3 倍?!
說干就干,你在同一個項目文件夾下打開了 3 個 AI 對話窗口,分配不同的任務,讓 AI 們同時開工,美滋滋~
![]()
結果你發(fā)現(xiàn),AI 們在執(zhí)行過程中修改了同一個文件,相互覆蓋,導致代碼全亂套了!
這個問題可難不倒你,你心想:俺只要手動把項目文件夾復制 3 份,每份交給一個 AI 單獨干活不就好了?
![]()
這次,3 個 AI 都順利完成了任務,但是你卻傻眼了:我怎么把 3 份代碼合并到一起啊?!難道要人工一行行比對、手動復制粘貼?那不得累死……
![]()
你趕緊向號稱「AI 編程之狗」的魚皮求救。
魚皮聽完,淡定地說:用 Git WorkTree 啊。
你一臉懵:雞特?臥客吹?這都是啥玩意兒?
Git 是啥?
魚皮:Git 是目前最流行的代碼版本管理工具,幾乎所有程序員都在用。
簡單來說,Git 就是代碼的時光機。
當你用 Git 管理項目時,每次保存代碼都會形成一個 版本,就像游戲里的存檔點。如果寫錯了代碼,隨時可以回到之前的版本,再也不怕 AI 把項目搞崩了。
![]()
而且多人協(xié)作開發(fā)時,每個人可以拉一個自己的 分支,就像從主干上長出的樹枝,各寫各的互不影響,寫完再合并回主干。
![]()
接下來我要教你的 WorkTree,就是 Git 的一個隱藏技能。
什么是 Git WorkTree?
魚皮:正常情況下,一個項目的 Git 倉庫只有一個工作目錄,也就是說你同一時間只能在一個分支上干活。想切換分支,就得先保存手頭的代碼,從當前分支爬下來,然后再爬到另一個分支上開始干活,來回折騰。
![]()
但用了 WorkTree,你可以讓一個倉庫同時擁有多個工作目錄,每個目錄對應不同的分支,你可以開啟分身術,同時在不同的分支上干活,互不干擾。
![]()
你撓了撓頭:等等,那不是也會多出好幾個文件夾嗎?和我剛才手動復制有啥區(qū)別?
魚皮:區(qū)別大了!你手動復制的是整個倉庫,每份都有完整的 .git 目錄和歷史記錄,不僅占用空間;而且寫完代碼后,還得跨多個文件夾對比代碼、手動合并,費時又容易出錯。
而 WorkTree 創(chuàng)建的文件夾,只是 鏈接 到同一個 .git 目錄。就像同一棵樹上長出的不同枝干,雖然各自開枝散葉,但根系是共享的,本體只有一棵樹。
![]()
你恍然大悟:所以我在任意一個工作樹里提交代碼,其他工作樹也能看到這次提交?
魚皮:沒錯,因為它們本質上是同一個 Git 倉庫。
怎么用 Git WorkTree?
你兩眼放光:聽起來有點兒夯啊,快教我怎么用!
魚皮:很簡單,就幾條命令。
比如你的項目在 meiji-takeout 文件夾,想同時搞首頁商家列表、搜索功能和個人中心這 3 個功能,可以創(chuàng)建 3 個工作樹,分別對應 3 個功能分支:
# 創(chuàng)建 3 個工作樹,對應 3 個功能分支
git worktree add -b feat/shop-list ../feat-homepage
git worktree add -b feat/search ../feat-search
git worktree add -b feat/user-profile ../feat-profile
執(zhí)行完之后,你的項目文件夾結構就變成了:
/projects/
├── meiji-takeout/ ← 主倉庫(main 分支)
├── feat-homepage/ ← 工作樹1(首頁商家列表)
├── feat-search/ ← 工作樹2(搜索功能)
└── feat-profile/ ← 工作樹3(個人中心)
每個文件夾都是一個完整的工作目錄,可以獨立寫代碼、提交、推送。
你激動了:那我在每個文件夾里分別開一個 AI 編程助手,讓 3 個 AI 各干各的,豈不是美滋滋?
魚皮:沒錯,這就是 WorkTree 在 AI 時代最香的用法。每個 AI 一個工作樹,并行開發(fā),互不打擾。
![]()
三個 AI 同時干活
像 Cursor 這樣的 AI 編程工具,已經(jīng)內置了 WorkTree 的支持。你可以直接在 Cursor 里開啟 Parallel Agents(并行代理)模式,它會自動幫你創(chuàng)建和管理工作樹,讓多個 AI 同時干活,完成后一鍵將代碼合并到主分支。
![]()
開發(fā)完怎么合并?
你:3 個功能都開發(fā)完成了,最后代碼怎么合并到一起呢?
魚皮:流程很簡單,輸入幾行命令就好了,當然你也可以讓 AI 幫你完成。
1)每個工作樹里的代碼完成后,先用 git add . 命令把改動的文件添加到 Git 的暫存區(qū),然后用 git commit 命令提交保存。
git add .
git commit -m "完成首頁商家列表"
2)接著切回主分支,用 git merge 命令把各個功能分支的代碼依次合并進來就行了。
cd ../meiji-takeout
git merge feat/shop-list
git merge feat/search
git merge feat/user-profile
3)合并完之后,記得用 git worktree remove 把用完的工作樹刪掉,保持項目整潔。
git worktree remove ../feat-homepage
git worktree remove ../feat-search
git worktree remove ../feat-profile
4)最后,如果你的代碼托管在 GitHub 開源平臺上,執(zhí)行 git push 命令同步到遠程就完事了。
你突然想到:等等,那如果兩個 AI 恰好改了同一個文件,會怎么樣?
魚皮:那在合并的時候會產生 沖突,Git 會提示你哪些地方有沖突,需要你手動決定保留誰的代碼、刪掉誰的代碼。
![]()
你皺起眉頭:那不是很麻煩?我又看不太懂 AI 寫的代碼……
魚皮:所以分配任務時,要盡量讓不同的 AI 改不同的文件。比如剛才的首頁商家列表和搜索功能,都會用到 “商家列表” 這個組件,就不適合拆給兩個 AI 分別做,最好交給一個 AI 一把梭。而個人中心是獨立的模塊,可以放心交給另一個 AI。
![]()
總之,WorkTree 給了你讓多個 AI 并行寫代碼的能力,但任務怎么拆,還得你自己規(guī)劃好。
結尾
你興奮地搓搓手:所以有了 WorkTree,AI 們各自在獨立的文件夾里干活,不會打架;合并代碼時也不用手動復制粘貼了,一舉兩得啊!
以后我指揮多個 AI 同時干活,效率直接起飛!
魚皮:不錯,多了解一些編程技術和工具能讓你的 AI 開發(fā)效率翻倍。如果你想系統(tǒng)學習 AI 編程,可以看看我免費開源的 ,從入門到實戰(zhàn)一條龍講解。點個收藏關注不迷路~
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.