Kỹ Thuật Cô Lập Môi Trường: Dùng Git Worktrees Bảo Vệ Nhánh Chính Khi Làm Việc Cùng Claude Code
Khi sử dụng các AI CLI như Claude Code, thói quen phát triển phần mềm trên một thư mục làm việc (Working Directory) duy nhất sẽ trở thành một điểm yếu chí mạng.
Giả sử Claude Code đang giúp bạn viết một tính năng phức tạp trên nhánh feature-auth. Bất ngờ, bạn nhận được yêu cầu fix một bug khẩn cấp trên nhánh main. Nếu bạn dùng lệnh git stash và git checkout main, toàn bộ hệ thống file bên dưới sẽ bị thay đổi đột ngột. Hệ lụy là Context Window (Cửa sổ ngữ cảnh) của Claude Code sẽ bị đứt gãy, AI bị mất phương hướng, đọc nhầm file của nhánh main để nối vào logic của nhánh feature-auth, và tạo ra một mớ code rác không thể cứu vãn.
Giải pháp tối thượng cho vấn đề này là Git Worktrees – tính năng cho phép bạn check out nhiều nhánh cùng lúc vào các thư mục vật lý hoàn toàn tách biệt, trong khi vẫn dùng chung một kho chứa (repository) gốc.
Dưới đây là luồng quy trình sử dụng Git Worktree để cô lập AI, tạo ra các "phòng thí nghiệm" độc lập mà không làm bẩn nhánh chính.
1. Bản Chất Của Git Worktree
Thay vì clone toàn bộ repo nhiều lần (tốn dung lượng và không đồng bộ được local commit), git worktree tạo ra một thư mục mới liên kết thẳng vào bộ nhớ .git của thư mục gốc.
-
Repository gốc (Root): Nơi chứa nhánh
main, luôn giữ ở trạng thái sạch sẽ (clean state). -
Worktree 1: Thư mục vật lý riêng biệt nằm ngoài root, chứa code của
feature-A. -
Worktree 2: Thư mục vật lý riêng biệt khác, chứa code của
hotfix-B.
Bạn có thể mở đồng thời cả 3 thư mục này trên 3 cửa sổ terminal/IDE khác nhau. Claude Code chạy ở đâu sẽ chỉ nhìn thấy mã nguồn và bối cảnh ở đúng thư mục đó.
2. Quy Trình Khởi Tạo Không Gian Cô Lập Cho AI
Giả sử thư mục gốc của bạn là ~/projects/my-app (đang ở nhánh main). Bạn muốn dùng Claude Code để phát triển tính năng thanh toán (feature-payment).
Bước 1: Tạo Worktree mới Thay vì tạo nhánh và switch trực tiếp trong my-app, hãy đứng tại thư mục gốc và chạy lệnh:
Bash
git worktree add ../my-app-payment -b feature-payment
Lệnh này làm 2 việc: Tạo một nhánh mới tên feature-payment từ main, và tạo ra một thư mục vật lý mới tên my-app-payment nằm ngang hàng với thư mục my-app.
Bước 2: Kích hoạt Claude Code trong khu vực cách ly Di chuyển sang thư mục vừa tạo và khởi chạy AI:
Bash
cd ../my-app-payment
claude
Lúc này, bạn có thể thoải mái giao việc cho Claude Code: "Hãy đọc spec và implement cổng thanh toán Momo vào file payment.service.ts." Bất kể Claude Code có "ảo giác", xóa nhầm file, hay tạo ra lỗi biên dịch, thì mọi hậu quả chỉ bị giới hạn vật lý bên trong thư mục my-app-payment. Thư mục my-app gốc của bạn vẫn nguyên vẹn 100%.
3. Xử Lý Khủng Hoảng Đa Luồng (Context Switching Không Đứt Gãy)
Sức mạnh thực sự của Worktree bộc lộ khi có sự cố cắt ngang. Đang lúc Claude Code miệt mài viết test cho feature-payment, sếp yêu cầu bạn fix ngay một lỗi typo trên production (nhánh main).
Thao tác xử lý:
-
Để mặc Claude Code tiếp tục chạy ở terminal của thư mục
my-app-payment. Không cần stop, không cần stash. -
Mở một tab terminal mới, truy cập vào thư mục gốc:
cd ~/projects/my-app. -
Tạo một worktree mới cho hotfix:
Bash
git worktree add ../my-app-hotfix-typo -b hotfix-typo -
Mở thư mục
../my-app-hotfix-typobằng IDE, sửa lỗi typo, commit và push lên origin để merge vàomain. -
Xong việc, bạn quay lại tab terminal của
my-app-payment. Claude Code vẫn ở đó, bộ nhớ nguyên vẹn, tiếp tục báo cáo: "Tôi đã viết xong unit test cho hàm thanh toán."
Sự phân tách vật lý này triệt tiêu hoàn toàn rủi ro AI đọc nhầm trạng thái của nhánh khác.
4. Dọn Dẹp Chiến Trường (Cleanup)
Khi tính năng feature-payment đã được review, merge vào main và bạn không cần đến nó nữa, việc dọn dẹp Worktree cực kỳ gọn gàng.
Đứng tại thư mục gốc (my-app), bạn thực hiện thu hồi không gian làm việc:
Bash
# Xóa thư mục worktree an toàn thông qua git
git worktree remove ../my-app-payment
# Xóa nhánh local nếu không còn sử dụng
git branch -d feature-payment
Lợi Ích Cốt Lõi Khi Kết Hợp Worktree Và AI CLI
-
Bảo vệ Context Window: AI chỉ theo dõi các sự kiện thay đổi file trong thư mục hiện tại. Worktree đảm bảo không có file nào bị tráo đổi ngầm (như khi dùng
git checkout), giúp AI duy trì sự tỉnh táo và tập trung 100% vào task hiện tại. -
Chống rủi ro phá hoại mã nguồn gốc: Khi thực thi các lệnh bash phức tạp hoặc chạy script tự động do AI sinh ra (như lệnh
rm -rfhoặc các đoạn script migrate DB), việc chạy trong một Worktree cô lập giúp nhánhmainluôn an toàn trước những quyết định sai lầm của AI. -
Thực thi song song (Parallel Execution): Bạn có thể bật 2 session Claude Code ở 2 Worktree khác nhau. Một AI lo việc viết test cho Module A, một AI lo việc refactor Module B. Cả hai dùng chung một Repo gốc nhưng không hề giẫm chân lên nhau.
All rights reserved