bảng thuật ngữ
git worktree là gì?
TL;DR
Git worktree là một bản sao làm việc thứ hai của repository, trên branch riêng và trong thư mục riêng, dùng chung lịch sử. Nó cho phép bạn làm trên hai branch cùng lúc mà không cần stash hay chuyển branch. Với AI agent, đây là thứ giúp chạy nhiều agent song song một cách an toàn, vì mỗi agent sửa file của riêng nó. Pane tạo một worktree cho mỗi pane, điền vào đó file .env và cài đặt của bạn, và xóa nó khi bạn lưu trữ pane.
Git worktree là một bản sao làm việc thứ hai của repository, nằm trong thư mục riêng và trên branch riêng. Nó dùng chung lịch sử git với checkout chính của bạn, nên tạo rất nhanh và tốn rất ít dung lượng đĩa. Bạn có thể mở bao nhiêu worktree cùng lúc tùy thích.
vấn đề worktree giải quyết
Một thư mục chỉ checkout được một branch. Worktree thêm một thư mục khác với một branch khác.
Bình thường một repo là một thư mục với một branch được checkout. Để làm hai việc cùng lúc, bạn phải stash thay đổi, chuyển branch, làm việc kia, chuyển lại rồi unstash. Cách đó chạy được, nhưng chậm và dễ sai.
Worktree cho bạn một thư mục thứ hai đã ở sẵn trên một branch khác. Tính năng A nằm ở một thư mục, tính năng B ở thư mục khác, cả hai mở cùng lúc, không cần stash hay chuyển branch.
vì sao điều này quan trọng với ai agent
Worktree là thứ giúp chạy nhiều agent trên một repo một cách an toàn.
Hai AI agent trong cùng một thư mục sẽ ghi đè lên nhau. Agent A sửa auth.ts, agent B sửa auth.ts một phút sau, và ai lưu sau cùng thì thắng. Công việc của agent kia mất sạch, và không agent nào biết.
Khi mỗi agent có một worktree, mỗi agent có thư mục, branch và file riêng. Cả hai có thể sửa auth.ts cùng lúc mà không đụng vào bản sao của nhau. Khi chúng xong, bạn review và merge từng branch riêng.
trên ổ đĩa trông thế nào
Cùng lịch sử, file riêng. Thư mục nằm ở đâu là do bạn hoặc công cụ của bạn quyết định.
my-project/ ← your main checkout (main)
my-project/worktrees/
├─ add-auth/ ← worktree, branch add-auth
└─ fix-nav/ ← worktree, branch fix-navMọi worktree dùng chung lịch sử git, nên commit tạo ở worktree này sẽ thấy được từ các worktree khác. Thay đổi chưa commit thì nằm yên trong thư mục của nó. Bản thân git không quan tâm worktree nằm ở đâu: cạnh repo, trong một thư mục riêng, hay bên trong repo như cách Pane làm.
pane tự động hóa thế nào
Pane tạo, chuẩn bị và dọn dẹp worktree cho mỗi pane, nên bạn không bao giờ phải gõ lệnh.
Bạn không cần chạy lệnh git nào. Khi bạn tạo một pane, Pane sẽ:
- Lấy một worktree đã chuẩn bị sẵn cho dự án và branch đó, nên pane mở ra gần như ngay lập tức, rồi gán cho nó một branch mới.
- Sao chép các file .env, cài đặt agent như .claude và .codex, và node_modules vào đó, để agent bắt đầu được ngay. Bạn có thể đổi danh sách này trong Settings.
- Khi bạn lưu trữ pane, kiểm tra xem còn công việc chưa commit, chưa được theo dõi hay chưa push không, rồi xóa worktree. Bạn có thể khôi phục pane đã lưu trữ sau này.
cách làm thủ công
Ba lệnh để tạo và bắt đầu, hai lệnh để dọn dẹp.
Không có công cụ, việc tương tự cần vài lệnh git:
echo "worktrees/" >> .git/info/exclude # once: keep them out of git status
git worktree add worktrees/add-auth -b add-auth
cd worktrees/add-auth
claude # start your agent here
# once the branch is merged:
git worktree remove worktrees/add-auth
git branch -d add-authNhớ xóa worktree và branch sau khi đã merge. Phần lớn mọi người quên, và đó là lý do các công cụ tự động hóa việc này.
tài liệu liên quan
- → Pane và worktree - cách Pane quản lý worktree
- → Chạy agent song song - toàn bộ quy trình song song
- → Monorepo - worktree trong thiết lập monorepo
- → Git worktree cho AI agent - trang tổng quan
Nguồn
- Đính chính
- Nếu có gì ở đây sai hoặc đã cũ, hãy báo cho chúng tôi, chúng tôi sẽ sửa và cập nhật ngày ở đầu trang. Mở issue trên GitHub
- Nguồn
câu hỏi thường gặp
Bởi Parsa Khazaeepoul, đồng sáng lập Pane. .