🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

AI界域的進化持續不斷,年初也依然忙於跟進和開發新技術。
在這種情況下,我們創建了一個名為 「vibe」 的CLI工具,以簡化Git Worktree的管理,讓開發流程更有效率。

Git Worktree是什麼

Git Worktree是一項Git的標準功能,可以在一個倉庫中同時檢出多個分支。

通常,在切換分支時會使用 git checkoutgit switch,但當從正在工作的分支A切換到另一個分支B時,檔案的內容會被切換。因此,存在以下問題:

  • 需要stash未完成的變更或進行臨時提交
  • 開發伺服器或建置過程會被重新啟動
  • 編輯器或IDE需要重新加載

使用Git Worktree,可以解決這些問題。 透過在不同的目錄中創建新的Worktree,可以在不影響原分支的情況下,並行進行不同分支的工作。

# 傳統方法
git checkout main
git checkout -b feature/new-feature  # main的工作會中斷

# 使用Worktree的方法
git worktree add ../new-feature feature/new-feature  # 可以繼續在main上工作

這樣可以實現以下使用方式:

  • 在分支A上實作時,若需要緊急修復bug,可以創建分支B的Worktree來處理
  • 在分支A上啟動開發伺服器的同時,進行分支B的評審或調查
  • 同時在不同的分支上運行多個AI代理

與倉庫克隆的比較

作為在多個分支上並行工作的方式,還有「多次克隆倉庫」的選擇。然而,Git Worktree有著明顯的優勢:

節省磁碟空間和克隆時間

如果多次克隆,則每個克隆都會生成一個 .git 目錄,並複製整個倉庫的歷史。而Git Worktree則是 共享Git物件,因此可以大幅節省磁碟空間。

此外,克隆時間也顯著縮短。對於多次克隆,需多次執行 git clone,但使用Git Worktree時,只需 第一次克隆後,再使用 git worktree add 就能創建新的工作目錄git worktree add 不需要下載Git物件,只進行工作目錄的檢出,因此幾乎可以瞬間完成。

# 多次克隆的情況
project1/.git  # 例:500MB(克隆30秒)
project2/.git  # 例:500MB(克隆30秒)
project3/.git  # 例:500MB(克隆30秒)
# 總計:1.5GB,90秒

# Git Worktree的情況
project/.git           # 例:500MB(第一次克 clones 30秒)
project-worktree1/     # 只有工作樹(添加幾秒)
project-worktree2/     # 只有工作樹(添加幾秒)
# 總計:500MB + α,30秒 + α

對於大型倉庫或同時在多個分支上協作的情況下,這些差異是顯而易見的。

Git操作的集中管理

所有的Worktree共享相同的 .git 目錄,因此擁有以下優點:

  • fetch/pull只需一次:在一個Worktree執行 git fetch 即可反映到所有Worktree
  • 分支列表統一:無論從哪個Worktree,都可以查看所有分支和Worktree的狀態
  • 設定共享.git/config 的設定在所有Worktree中共享
# 克隆的情況:需要在各目錄分別fetch
cd project1 && git fetch
cd project2 && git fetch
cd project3 && git fetch

# Worktree的情況:一次fetch即可更新所有
cd project && git fetch

防止誤操作

管理多個克隆時,容易迷失「在哪個目錄工作」。使用Git Worktree,可以透過 git worktree list 立即查看整體情況,管理起來會更容易。

$ git worktree list
/path/to/project              abc1234 [main]
/path/to/project-feature      def5678 [feature/new-ui]
/path/to/project-hotfix       ghi9012 [hotfix/critical-bug]

基於這些理由,對於並行工作,我們強烈建議使用Git Worktree,而非倉庫的多次克隆。

創建背景

Git Worktree是一個便利的功能,但在使用 git worktree add 之後,會出現拷貝 .env 等檔案、執行 npm installbuild 等常規工作流程。
隨著AI代理的發展,並行工作已成為常態,但這些步驟變得繁瑣,因此我想創建這個工具以方便使用。

vibe是什麼

vibe 是一個管理Git Worktree創建、環境構建和刪除的CLI工具。
它是用Deno實現的,能在各種操作系統上運行。

安裝

在macOS上,可以使用Homebrew進行安裝。

brew install kexi/tap/vibe

也支持Deno (JSR)、Linux、Windows等。
詳情請參考倉庫的README。
https://github.com/kexi/vibe#installation

試用

創建Worktree

使用 vibe start <branch> 創建Worktree。可以互動式地創建目錄,或檢查已存在的Worktree。

vibe start feat/new-feature

通過設定文件自動化

在專案根目錄放置 .vibe.toml 可以定義創建Worktree時的行為。

.vibe.toml:

# 從父倉庫複製的檔案
[copy]
files = [
  ".env",
  "config/*.json"
]

# 在創建Worktree之前和之後執行的命令
[hooks]
post_start = [
  "npm install",
  "claude"
]

在創建完Worktree後會立刻複製 .env 和設定檔,並進行 npm install 等設置,然後立即啟動 claude 等AI代理,開始編碼的工作流程。

這樣可以將從創建Worktree到開始編碼的時間縮短至幾乎為零。
不會中斷思考,能快速進入與AI的對話式編程體驗,令人一旦體會便難以回頭。

刪除Worktree

工作結束後,使用 vibe clean 刪除Worktree。

vibe clean

有關詳細的使用方法和設定選項,請參考倉庫的中文文件。
https://github.com/kexi/vibe/blob/main/README.ja.md

結語

在使用Git Worktree進行並行工作時,使用vibe可以減少環境構建和檔案拷貝的麻煩,提高工作效率。
特別是在同時運行多個AI代理於不同分支時,更是便捷。
強烈建議您試用vibe!

功能需求或bug報告,請在以下倉庫的Issue中提交。


原文出處:https://qiita.com/kexi/items/65e6786bd9519698c401


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝8   💬8   ❤️3
204
🥈
我愛JS
📝1   💬6   ❤️2
57
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付