Git Worktrees: Chạy song song nhiều Claude session trong 1 repo
Chạy song song nhiều Claude session trên các branch riêng với Git Worktrees. Tránh mất context AI khi chuyển branch, tối ưu cho vibe coding và xử lý đa nhiệm.
Định nghĩa
Git Worktrees là tính năng Git cho phép tạo nhiều working directory từ một repository duy nhất, giúp Claude Code chạy song song nhiều session trên các branch khác nhau mà AI không bị "mất trí nhớ" hay hallucinate do chuyển đổi ngữ cảnh đột ngột.
Giải thích chi tiết
Vấn đề "Cache Invalidation" của AI khi chuyển branch
Khi bạn làm việc với Claude Code trong một session dài, AI dần xây dựng một "mental cache" về codebase — nó nhớ các mối quan hệ giữa file A gọi hàm trong file B, biết chỗ nào cần refactor, và nắm được context của task đang làm.
Vấn đề xảy ra khi bạn git checkout sang branch khác trong cùng một directory: bạn vừa thực hiện một cache invalidation attack lên AI. Thực tại bên dưới Claude thay đổi mà nó không hay biết — file biến mất, code di chuyển, pattern thay đổi. AI sẽ hallucinate khi đề xuất sửa file đã không còn tồn tại, hoặc áp dụng pattern từ branch cũ sang branch mới không phù hợp.
Đây là lý do tại sao chuyển branch trong khi Claude đang "suy nghĩ" về codebase giống như việc bạn lén thay đổi tất cả nguyên liệu trong bếp khi đầu bếp đang quay đi — khi quay lại, họ sẽ lấy nhầm gia vị.
Worktrees như "Nhiều bếp riêng" cho từng đầu bếp AI
Worktrees giải quyết vấn đề này bằng cách lật ngược abstraction: thay vì một directory duy nhất biến hình giữa các branch, bạn có nhiều thực thể được vật chất hóa (materialized realities) tồn tại song song. Mỗi worktree là một "vũ trụ" ổn định nơi filesystem không bao giờ thay đổi bên dưới Claude trừ khi chính AI thực hiện thay đổi.
Cơ chế kỹ thuật:
- Shared
.git: Tất cả worktrees chia sẻ một folder.gitduy nhất — không duplicate lịch sử commit, không tốn dung lượng cho object store - Isolated working trees: Mỗi worktree có working directory riêng, chứa snapshot của một branch cụ thể
- Branch locking: Git enforce rule — cùng một branch không thể checkout ở hai worktrees đồng thời, tránh conflict
Ví dụ: Bạn có thể có:
~/project/main→ branchmain~/project/feature-auth→ branchfeature/oauth-login~/project/hotfix-db→ branchhotfix/connection-pool
Cả ba đều cùng trỏ về một repo, nhưng mỗi Claude session chạy trong một worktree sẽ thấy một thực tại filesystem ổn định, riêng biệt.
Cơ chế tích hợp trong Claude Code
Claude Code CLI cung cấp hỗ trợ native cho worktrees thông qua flag --worktree:
claude --worktree feature-stripe-integrationLệnh này tự động:
- Tạo worktree mới tại
.claude/worktrees/feature-stripe-integration/ - Checkout branch mới hoặc existing branch
- Spawn session với context hoàn toàn cô lập
Khác với việc clone thêm một bản sao repo (tốn nhiều GB cho node_modules và .git), worktree chỉ duplicate working tree (vài MB), trong khi vẫn cho phép bạn chạy npm install riêng cho mỗi branch nếu cần.
Kết hợp với Subagents để tăng tốc
Worktrees cung cấp "physical isolation" cần thiết để Subagents hoạt động hiệu quả. Khi bạn dùng /batch hoặc tạo nhiều subagents, mỗi agent có thể được gán vào một worktree riêng — chúng làm việc song song thực sự trên các branch khác nhau mà không bị "crosstalk" về mặt filesystem. Điều này biến Claude Code từ "một đầu bếp đa nhiệm" thành "một nhà hàng với nhiều bếp chuyên biệt".
Ví dụ thực tế
Startup VN: Song song 2 feature không đụng độ
Anh Minh, CTO của startup fintech tại Hà Nội, cần ship cả tính năng "thanh toán QR" và "báo cáo tài chính" trong cùng một tuần. Thay vì liên tục switch branch trên cùng một directory (khiến Claude bối rối vì file liên tục biến mất), anh tạo hai worktree:
# Terminal 1
cd ~/worktrees/qr-payment
claude --worktree qr-payment
# Claude session 1: Focus hoàn toàn vào integration QR, không bị interrupt
# Terminal 2
cd ~/worktrees/finance-report
claude --worktree finance-report
# Claude session 2: Song song làm báo cáo với context database schema khácKết quả: Cả hai feature được develop song song với zero downtime do context switching. Khi cần merge, anh chỉ cần git merge bình thường từ hai branch này vào main — không có conflict liên quan đến temporary files hay uncommitted changes như khi dùng stash.
Freelancer: Quản lý 3 client branches cùng lúc
Chị Lan, freelance web developer, đang maintain landing page cho 3 khách hàng khác nhau trên cùng một codebase template. Thay vì clone 3 lần (tốn 15GB cho node_modules và build artifacts), chị dùng worktrees:
git worktree add ../client-a main
git worktree add ../client-b seasonal-promo
git worktree add ../client-c hotfix-contact-formMỗi client có một Claude session riêng với context về brand colors, content requirements được lưu trong CLAUDE.md riêng của từng worktree. Chị có thể chạy claude -p "deploy to Vercel" trên cả ba worktrees song song mà không lo lẫn lộn environment variables giữa các client.
Team Lead: Review PR không block development
Anh Tú là Tech Lead. Khi cần review PR #42 (một refactor lớn), anh không checkout branch đó vào working directory chính (vì sẽ mất context của feature đang code dở). Thay vào đó:
git worktree add ../review-pr-42 pr-42
cd ../review-pr-42
claude
# Claude analyze refactor trong worktree riêng, tìm lỗi logicTrong khi đó, terminal chính vẫn giữ nguyên context của feature đang làm. Sau khi review xong, anh xóa worktree (rm -rf ../review-pr-42 && git worktree prune) mà không ảnh hưởng gì đến worktree chính.
Ứng dụng
Developer cá nhân (Vibe Coding) Chạy 3-5 session song song cho các ý tưởng thử nghiệm khác nhau. Ví dụ: một session làm authentication, một session làm UI dashboard, một session thử nghiệm migration database — tất cả trên cùng một repo gốc nhưng không bị "pollute" lẫn nhau.
Team nhỏ (2-5 người) Tránh bottleneck khi chờ review. Mỗi người có thể có worktree riêng cho feature branch của mình, trong khi worktree "shared" dùng cho integration testing. Lead có thể spawn worktree riêng cho mỗi PR cần review mà không cần interrupt công việc hiện tại.
DevOps và QA
Test nhiều version của ứng dụng cùng lúc trên local. Ví dụ: một worktree chạy main (production), một chạy staging, một chạy feature-x để so sánh behavior side-by-side mà không cần container hoặc VM nặng nề.
Non-coder (Product Manager) Dùng worktrees để "thử nghiệm" nhiều ý tưởng prototype song song. Ví dụ: một worktree cho landing page version A, một cho version B — Claude có thể code cả hai cùng lúc dựa trên prompt khác nhau, sau đó so sánh kết quả.
So sánh
| Phương pháp | Dung lượng disk | Thời gian setup | Chi phí chuyển đổi | Khả năng song song | Lý tưởng cho |
|---|---|---|---|---|---|
| Git Worktrees | Thấp (chỉ duplicate working tree, MBs) | dưới 5 giây | Zero (không đổi branch) | Cao (3-5 session) | Parallel development, vibe coding |
| Clone nhiều lần | Cao (duplicate cả .git và node_modules, GBs) | 5-10 phút (npm install) | Không cần (đã tách biệt) | Trung bình | Long-term divergence, fork lớn |
| Git Stash + Checkout | Không tăng | dưới 1 giây | Cao (cache invalidation, rebuild mental model) | Thấp (tuần tự) | Hotfix nhanh, task ngắn |
| Git Switch trong cùng dir | Không tăng | Ngay lập tức | Cực cao (mất context AI) | Không | Không khuyến nghị với Claude |
Kết luận: Worktrees là "sweet spot" cho AI-assisted development — bạn được lợi ích của isolation (như clone) với chi phí gần như không đáng kể (chỉ tốn thêm vài MB), trong khi tránh được "cache invalidation" khi switch branch. Đây là lý do Boris Cherny (creator của Claude Code) gọi đây là "single biggest productivity unlock" cho agentic workflows.
Bài viết liên quan
Cùng cụm (Advanced Features)
- Xử lý hàng trăm file song song với /batch — Kết hợp worktrees với batch processing để xử lý refactoring lớn
- Tự động hóa định kỳ với /loop và /schedule — Tự động chạy task trên các worktree cụ thể
- Teleport & Remote Control — Chuyển session giữa máy tính và mobile khi dùng worktree
- Headless Mode cho CI/CD — Chạy Claude trên worktree trong pipeline tự động
- Auto Mode — Để Claude tự quyết định trên các worktree riêng biệt
- Extended Thinking — Bật chế độ suy nghĩ sâu cho các task phức tạp trên worktree
- Voice Mode — Code bằng giọng nói trên từng worktree riêng biệt
- Session Management — Quản lý các session phân tán trên nhiều worktrees
- Context Compaction — Xử lý khi context window đầy trong các session worktree dài
- Chrome Extension — Cho Claude "nhìn thấy" UI khi test trên các worktree khác nhau
Đọc tiếp
- Level 1: Daily Workflow — Nền tảng sử dụng Claude Code hàng ngày trước khi chuyển sang advanced features
- Level 4: Pro Automation — Tự động hóa chuyên sâu với worktrees và CI/CD integration
8 mẫu Hook Claude Code thực chiến: Auto-format, chặn SQLi, tối ưu context
8 mẫu hook Claude Code từ format code tự động đến security scan và context tracking — giải pháp automation thực chiến cho developer Việt Nam.
/batch: Xử lý hàng loạt file song song, refactor cả dự án trong 15 phút
Giảm 90% thời gian refactor với /batch: xử lý hàng trăm file song song qua git worktree, an toàn hơn script tự viết mà không lo xung đột context.