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-nav

Mọ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ẽ:

  1. 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.
  2. 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.
  3. 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-auth

Nhớ 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.

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

hoặc
Tải xuống*
Cảnh báo Windows SmartScreenBản tải trực tiếp có thể hiện cảnh báo SmartScreen khi Pane chưa được ký. Pane hoàn toàn mã nguồn mở. Bạn có thể tự kiểm tra code và build từ mã nguồn.1. Bấm Thông tin khác2. Bấm Vẫn chạy3. Tiếp tục cài đặtCài qua PowerShell tải thẳng bản phát hành chính thức và tránh hầu hết vướng mắc khi tải bằng trình duyệt.cài global qua npm
Dán lệnh đó vào PowerShell.Linux

Bởi Parsa Khazaeepoul, đồng sáng lập Pane. .