{"product_id":"git-worktrees-trong-claude-code-phat-triển-song-song-khong-xung-dột","title":"Git Worktrees trong Claude Code — Phát triển song song không xung đột","description":"\n\u003cp\u003eKhi làm việc với Claude Code trên các dự án lớn, bạn thường cần xử lý nhiều tác vụ đồng thời — sửa bug khẩn cấp trong khi đang phát triển feature mới, hoặc chạy nhiều agent Claude Code song song trên các phần khác nhau của codebase. Git worktrees giải quyết vấn đề này bằng cách cho phép bạn có nhiều working directory cùng trỏ về một repository, mỗi directory ở một branch khác nhau. Kết hợp với Claude Code, đây là workflow mạnh mẽ cho phát triển song song thực sự.\u003c\/p\u003e\n\n\u003ch2\u003eGit Worktrees là gì?\u003c\/h2\u003e\n\u003cp\u003eThông thường, một Git repository có duy nhất một working directory. Khi bạn muốn chuyển sang branch khác, bạn phải dùng git checkout hoặc git switch — và toàn bộ file trong thư mục sẽ thay đổi. Điều này gây ra nhiều bất tiện:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003ePhải stash hoặc commit work-in-progress trước khi chuyển branch\u003c\/li\u003e\n  \u003cli\u003eDev server phải restart vì file thay đổi\u003c\/li\u003e\n  \u003cli\u003eKhông thể so sánh trực tiếp giữa hai branch trong file explorer\u003c\/li\u003e\n  \u003cli\u003eKhông thể chạy hai instance Claude Code trên hai branch cùng lúc\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eGit worktrees giải quyết tất cả các vấn đề trên. Mỗi worktree là một thư mục riêng biệt trên ổ đĩa, checkout một branch cụ thể, nhưng chia sẻ chung Git history và objects với repository gốc. Bạn có thể có 5 worktree cho 5 branch khác nhau, mỗi thư mục hoạt động độc lập.\u003c\/p\u003e\n\n\u003ch3\u003eSo sánh workflow truyền thống và worktree\u003c\/h3\u003e\n\u003cp\u003eWorkflow truyền thống khi cần sửa bug khẩn cấp giữa lúc đang code feature:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Đang code feature-x, cần sửa hotfix\ngit stash                          # Lưu tạm work đang làm\ngit checkout main                  # Chuyển về main\ngit checkout -b hotfix\/bug-123     # Tạo branch hotfix\n# ... sửa bug, commit, push ...\ngit checkout feature-x             # Quay lại feature\ngit stash pop                      # Lấy lại work đang làm\n# Hy vọng stash không conflict...\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eWorkflow với worktree:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Đang code feature-x trong ~\/project\/\n# Tạo worktree mới cho hotfix — không ảnh hưởng gì đến thư mục hiện tại\ngit worktree add ..\/project-hotfix hotfix\/bug-123 -b\n# Mở terminal mới, cd vào ..\/project-hotfix\n# Sửa bug, commit, push\n# Xong thì xóa worktree\ngit worktree remove ..\/project-hotfix\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eTại sao Claude Code sử dụng worktrees?\u003c\/h2\u003e\n\u003cp\u003eClaude Code hỗ trợ worktrees vì nhiều lý do kỹ thuật và thực tiễn:\u003c\/p\u003e\n\n\u003ch3\u003eCách ly hoàn toàn giữa các tác vụ\u003c\/h3\u003e\n\u003cp\u003eKhi Claude Code làm việc trên một worktree, mọi thay đổi file đều nằm trong thư mục của worktree đó. Nếu Claude gây lỗi hoặc thay đổi sai hướng, bạn chỉ cần xóa worktree — repository gốc không bị ảnh hưởng.\u003c\/p\u003e\n\n\u003ch3\u003ePhát triển song song với nhiều agent\u003c\/h3\u003e\n\u003cp\u003eBạn có thể chạy nhiều instance Claude Code cùng lúc, mỗi instance trên một worktree riêng. Ví dụ: một Claude sửa bug, một Claude viết test, một Claude refactor. Không instance nào ảnh hưởng đến instance khác vì chúng làm việc trên các thư mục vật lý khác nhau.\u003c\/p\u003e\n\n\u003ch3\u003eReview dễ dàng hơn\u003c\/h3\u003e\n\u003cp\u003eSau khi Claude hoàn thành tác vụ trên worktree, bạn có thể review toàn bộ thay đổi trước khi merge về main. Nếu không hài lòng, xóa worktree và bắt đầu lại.\u003c\/p\u003e\n\n\u003ch2\u003eCác lệnh Git Worktree cơ bản\u003c\/h2\u003e\n\n\u003ch3\u003eTạo worktree mới\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Tạo worktree từ branch đã tồn tại\ngit worktree add ..\/my-worktree existing-branch\n\n# Tạo worktree với branch mới (dựa trên HEAD hiện tại)\ngit worktree add ..\/my-worktree -b new-branch-name\n\n# Tạo worktree với branch mới dựa trên branch cụ thể\ngit worktree add ..\/my-worktree -b new-branch origin\/main\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eLưu ý quan trọng: Mỗi branch chỉ có thể được checkout trong tối đa một worktree. Nếu branch feature-x đã được checkout ở worktree A, bạn không thể tạo worktree B cũng checkout feature-x.\u003c\/p\u003e\n\n\u003ch3\u003eLiệt kê worktrees\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Xem tất cả worktree đang tồn tại\ngit worktree list\n\n# Output mẫu:\n# \/home\/user\/project          abc1234 [main]\n# \/home\/user\/project-feature  def5678 [feature-auth]\n# \/home\/user\/project-hotfix   ghi9012 [hotfix\/bug-456]\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eXóa worktree\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Xóa worktree (sau khi đã merge hoặc không cần nữa)\ngit worktree remove ..\/my-worktree\n\n# Force xóa (nếu có uncommitted changes)\ngit worktree remove --force ..\/my-worktree\n\n# Dọn dẹp worktree đã bị xóa thủ công (rm -rf thay vì git worktree remove)\ngit worktree prune\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eWorkflow thực tế: Claude Code với Worktrees\u003c\/h2\u003e\n\u003cp\u003eDưới đây là các workflow thực tế kết hợp Claude Code và git worktrees.\u003c\/p\u003e\n\n\u003ch3\u003eWorkflow 1: Feature development song song\u003c\/h3\u003e\n\u003cp\u003eGiả sử bạn cần phát triển 2 feature độc lập cùng lúc:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Terminal 1: Setup worktree cho feature A\ncd ~\/projects\/my-app\ngit worktree add ..\/my-app-feature-a -b feature\/user-auth origin\/main\n\n# Mở Claude Code trong worktree feature A\ncd ..\/my-app-feature-a\nclaude\n\n# Trong Claude Code:\n# \"Implement JWT authentication with refresh tokens.\n#  Create auth middleware, login\/register endpoints,\n#  and token refresh logic.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cpre\u003e\u003ccode\u003e# Terminal 2: Setup worktree cho feature B\ncd ~\/projects\/my-app\ngit worktree add ..\/my-app-feature-b -b feature\/payment-integration origin\/main\n\n# Mở Claude Code trong worktree feature B\ncd ..\/my-app-feature-b\nclaude\n\n# Trong Claude Code:\n# \"Integrate Stripe payment processing.\n#  Create checkout flow, webhook handling,\n#  and subscription management.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eHai Claude Code instance chạy song song, mỗi instance trên thư mục riêng, branch riêng. Không có xung đột file, không cần stash, không cần chuyển branch.\u003c\/p\u003e\n\n\u003ch3\u003eWorkflow 2: Hotfix trong khi đang develop\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Đang develop feature trên ~\/projects\/my-app (branch: feature\/dashboard)\n# Nhận báo bug production cần fix gấp\n\n# Tạo worktree cho hotfix\ngit worktree add ..\/my-app-hotfix -b hotfix\/critical-fix origin\/main\n\n# Mở Claude Code mới cho hotfix\ncd ..\/my-app-hotfix\nclaude\n\n# \"Fix the null pointer exception in UserService.getProfile()\n#  that occurs when user has no avatar set.\"\n\n# Sau khi fix xong:\ngit add -A \u0026amp;\u0026amp; git commit -m \"fix: handle null avatar in UserService.getProfile()\"\ngit push origin hotfix\/critical-fix\n\n# Tạo PR, merge, xong\n# Quay lại feature development — không mất gì cả\ncd ~\/projects\/my-app\n# Claude Code vẫn đang chạy, work vẫn nguyên\n\n# Dọn dẹp worktree hotfix\ngit worktree remove ..\/my-app-hotfix\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eWorkflow 3: Multi-agent parallel development\u003c\/h3\u003e\n\u003cp\u003eĐây là workflow nâng cao nhất — chạy nhiều agent Claude Code đồng thời, mỗi agent phụ trách một phần của dự án.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Tạo 3 worktrees cho 3 agent\ngit worktree add ..\/app-agent-1 -b task\/api-endpoints origin\/main\ngit worktree add ..\/app-agent-2 -b task\/frontend-components origin\/main\ngit worktree add ..\/app-agent-3 -b task\/test-suite origin\/main\n\n# Agent 1: Backend API\ncd ..\/app-agent-1 \u0026amp;\u0026amp; claude\n# \"Create REST API endpoints for user management:\n#  CRUD operations, pagination, filtering, validation.\"\n\n# Agent 2: Frontend components\ncd ..\/app-agent-2 \u0026amp;\u0026amp; claude\n# \"Build React components for user management UI:\n#  UserList, UserForm, UserProfile, with proper state management.\"\n\n# Agent 3: Test suite\ncd ..\/app-agent-3 \u0026amp;\u0026amp; claude\n# \"Write comprehensive test suite for user management:\n#  unit tests for API, integration tests, component tests.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eĐiểm quan trọng: Các agent phải làm việc trên các phần tách biệt của codebase. Nếu Agent 1 và Agent 2 cùng sửa file routes.ts, bạn sẽ gặp merge conflict. Hãy phân chia tác vụ sao cho overlap tối thiểu.\u003c\/p\u003e\n\n\u003ch2\u003eMerge kết quả từ nhiều worktrees\u003c\/h2\u003e\n\u003cp\u003eSau khi các agent hoàn thành, bạn cần merge kết quả về branch chính. Có nhiều chiến lược merge:\u003c\/p\u003e\n\n\u003ch3\u003eChiến lược 1: Merge tuần tự\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Merge từng branch theo thứ tự ưu tiên\ngit checkout main\ngit merge task\/api-endpoints       # Merge backend trước\ngit merge task\/frontend-components  # Merge frontend\ngit merge task\/test-suite           # Merge tests\n\n# Nếu có conflict, giải quyết tại mỗi bước\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eChiến lược 2: Rebase trước khi merge\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Rebase mỗi branch lên main trước khi merge\n# Giúp giữ history sạch\n\ncd ..\/app-agent-2\ngit rebase main  # Rebase frontend lên main (đã có backend)\n# Giải quyết conflict nếu có\n\ncd ..\/app-agent-3\ngit rebase main  # Rebase tests\n# Giải quyết conflict nếu có\n\n# Merge vào main (fast-forward)\ngit checkout main\ngit merge task\/frontend-components\ngit merge task\/test-suite\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eChiến lược 3: Dùng Claude Code để merge\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Trong main branch, yêu cầu Claude giúp merge\ncd ~\/projects\/my-app\nclaude\n\n# \"I have 3 branches that need to be merged into main:\n#  - task\/api-endpoints (backend API)\n#  - task\/frontend-components (React UI)\n#  - task\/test-suite (tests)\n#\n#  Please merge them one by one, resolving any conflicts.\n#  Prioritize API code over frontend when there are conflicts\n#  in shared files.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eDọn dẹp worktrees\u003c\/h2\u003e\n\u003cp\u003eWorktrees chiếm dung lượng ổ đĩa (mỗi worktree là một bản copy đầy đủ của working directory, dù chia sẻ Git objects). Cần dọn dẹp thường xuyên:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# Xem tất cả worktree hiện có\ngit worktree list\n\n# Xóa worktree đã merge xong\ngit worktree remove ..\/app-agent-1\ngit worktree remove ..\/app-agent-2\ngit worktree remove ..\/app-agent-3\n\n# Xóa branch đã merge (nếu không cần nữa)\ngit branch -d task\/api-endpoints\ngit branch -d task\/frontend-components\ngit branch -d task\/test-suite\n\n# Dọn dẹp worktree \"mồ côi\" (thư mục đã bị xóa nhưng Git chưa biết)\ngit worktree prune\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eScript dọn dẹp tự động\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e#!\/bin\/bash\n# cleanup-worktrees.sh\n# Xóa tất cả worktree đã merge vào main\n\nMAIN_BRANCH=\"main\"\n\nfor worktree in $(git worktree list --porcelain | grep \"^worktree \" | sed 's\/worktree \/\/'); do\n  branch=$(git -C \"$worktree\" branch --show-current 2\u0026gt;\/dev\/null)\n  if [ \"$branch\" != \"$MAIN_BRANCH\" ] \u0026amp;\u0026amp; [ -n \"$branch\" ]; then\n    # Kiểm tra branch đã merge vào main chưa\n    if git branch --merged \"$MAIN_BRANCH\" | grep -q \"$branch\"; then\n      echo \"Removing merged worktree: $worktree (branch: $branch)\"\n      git worktree remove \"$worktree\"\n      git branch -d \"$branch\"\n    else\n      echo \"Keeping unmerged worktree: $worktree (branch: $branch)\"\n    fi\n  fi\ndone\n\ngit worktree prune\necho \"Cleanup complete.\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eCác lỗi thường gặp và cách xử lý\u003c\/h2\u003e\n\n\u003ch3\u003eLỗi: Branch already checked out\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Lỗi: fatal: 'feature-x' is already checked out at '\/path\/to\/worktree'\n# Nguyên nhân: Mỗi branch chỉ được checkout trong 1 worktree\n\n# Giải pháp 1: Dùng branch khác\ngit worktree add ..\/new-worktree -b feature-x-v2 feature-x\n\n# Giải pháp 2: Xóa worktree cũ trước\ngit worktree remove \/path\/to\/old-worktree\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eLỗi: Worktree thư mục đã tồn tại\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Lỗi: fatal: '\/path\/to\/worktree' already exists\n# Nguyên nhân: Thư mục đã tồn tại (có thể từ lần trước chưa dọn)\n\n# Giải pháp: Dọn dẹp và thử lại\ngit worktree prune\nrm -rf \/path\/to\/worktree  # Cẩn thận, chỉ xóa nếu chắc chắn\ngit worktree add \/path\/to\/worktree branch-name\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eLỗi: node_modules và dependencies\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Mỗi worktree cần install dependencies riêng\n# vì node_modules nằm trong working directory, không chia sẻ\n\ncd ..\/my-worktree\nnpm install  # hoặc yarn install, pnpm install\n\n# Mẹo: Dùng pnpm với shared store để tiết kiệm ổ đĩa\n# pnpm dùng hard link nên không duplicate packages\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eQuy ước đặt tên worktree\u003c\/h2\u003e\n\u003cp\u003eĐể quản lý nhiều worktree hiệu quả, nên có quy ước đặt tên rõ ràng:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Quy ước: {project}-{purpose}\n# Ví dụ:\ngit worktree add ..\/myapp-feature-auth -b feature\/auth\ngit worktree add ..\/myapp-hotfix-login -b hotfix\/login-crash\ngit worktree add ..\/myapp-experiment-new-ui -b experiment\/new-ui\ngit worktree add ..\/myapp-agent-backend -b task\/agent-backend\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eWorktrees kết hợp với Claude Code Hooks\u003c\/h2\u003e\n\u003cp\u003eNếu bạn đã cấu hình hooks trong .claude\/settings.json (xem bài viết về Claude Code Hooks), hooks sẽ tự động hoạt động trong worktree vì file settings.json nằm trong repository và được chia sẻ giữa tất cả worktrees. Điều này cực kỳ tiện lợi — mọi worktree đều có cùng auto-format, lint, test pipeline.\u003c\/p\u003e\n\n\u003ch3\u003eCấu hình đặc biệt cho multi-agent workflow\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Tạo script khởi tạo worktree tự động\n# File: scripts\/create-agent-worktree.sh\n\n#!\/bin\/bash\nTASK_NAME=$1\nBASE_BRANCH=${2:-main}\n\nif [ -z \"$TASK_NAME\" ]; then\n  echo \"Usage: .\/create-agent-worktree.sh \u003ctask-name\u003e [base-branch]\"\n  exit 1\nfi\n\nWORKTREE_DIR=\"..\/$(basename $(pwd))-$TASK_NAME\"\nBRANCH_NAME=\"task\/$TASK_NAME\"\n\n# Tạo worktree\ngit worktree add \"$WORKTREE_DIR\" -b \"$BRANCH_NAME\" \"$BASE_BRANCH\"\n\n# Install dependencies\ncd \"$WORKTREE_DIR\"\nif [ -f \"package.json\" ]; then\n  npm install --silent\nfi\n\necho \"Worktree created at: $WORKTREE_DIR\"\necho \"Branch: $BRANCH_NAME\"\necho \"Ready to run: cd $WORKTREE_DIR \u0026amp;\u0026amp; claude\"\u003c\/task-name\u003e\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eWorktrees trong thực tế: Case study\u003c\/h2\u003e\n\u003cp\u003eDưới đây là một kịch bản thực tế minh họa sức mạnh của worktrees với Claude Code.\u003c\/p\u003e\n\n\u003ch3\u003eKịch bản: Refactor module authentication trong 1 ngày\u003c\/h3\u003e\n\u003cp\u003eBạn cần refactor toàn bộ module authentication — từ session-based sang JWT. Tác vụ này bao gồm thay đổi backend API, update frontend, viết test, và cập nhật tài liệu. Nếu làm tuần tự, cần 2-3 ngày. Với worktrees và multi-agent:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# Bước 1: Tạo 4 worktrees song song\ngit worktree add ..\/app-auth-api -b refactor\/auth-api main\ngit worktree add ..\/app-auth-frontend -b refactor\/auth-frontend main\ngit worktree add ..\/app-auth-tests -b refactor\/auth-tests main\ngit worktree add ..\/app-auth-docs -b refactor\/auth-docs main\n\n# Bước 2: Khởi chạy 4 agent Claude Code đồng thời\n\n# Agent 1 — Backend API (Terminal 1)\ncd ..\/app-auth-api \u0026amp;\u0026amp; claude\n# Prompt: \"Refactor authentication from session-based to JWT.\n#  Update all auth endpoints, middleware, and database schema.\n#  Keep backward compatibility during migration.\"\n\n# Agent 2 — Frontend (Terminal 2)\ncd ..\/app-auth-frontend \u0026amp;\u0026amp; claude\n# Prompt: \"Update all frontend authentication logic to use JWT.\n#  Implement token storage, refresh logic, and update API calls.\n#  Handle auth state in React context.\"\n\n# Agent 3 — Tests (Terminal 3)\ncd ..\/app-auth-tests \u0026amp;\u0026amp; claude\n# Prompt: \"Write comprehensive test suite for JWT authentication.\n#  Cover: login, register, refresh token, expired token,\n#  invalid token, role-based access.\"\n\n# Agent 4 — Documentation (Terminal 4)\ncd ..\/app-auth-docs \u0026amp;\u0026amp; claude\n# Prompt: \"Update API documentation for new JWT authentication.\n#  Include: endpoint changes, request\/response examples,\n#  migration guide for existing clients.\"\n\n# Bước 3: Merge theo thứ tự (sau khi tất cả agent hoàn thành)\ngit checkout main\ngit merge refactor\/auth-api          # Backend trước\ngit merge refactor\/auth-frontend     # Frontend cần backend\ngit merge refactor\/auth-tests        # Tests cần cả hai\ngit merge refactor\/auth-docs         # Docs cuối cùng\n\n# Bước 4: Dọn dẹp\ngit worktree remove ..\/app-auth-api\ngit worktree remove ..\/app-auth-frontend\ngit worktree remove ..\/app-auth-tests\ngit worktree remove ..\/app-auth-docs\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eKết quả: Tác vụ 2-3 ngày rút xuống còn vài giờ. Mỗi agent tập trung vào phần việc riêng, không cản trở nhau.\u003c\/p\u003e\n\n\u003ch2\u003eKhi nào nên và không nên dùng worktrees\u003c\/h2\u003e\n\u003cp\u003eWorktrees mạnh mẽ nhưng không phải lúc nào cũng cần thiết:\u003c\/p\u003e\n\n\u003ch3\u003eNên dùng khi\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eCần làm việc song song trên nhiều branch (feature + hotfix)\u003c\/li\u003e\n  \u003cli\u003eChạy nhiều instance Claude Code đồng thời trên cùng repo\u003c\/li\u003e\n  \u003cli\u003eCần so sánh code giữa hai branch bằng file explorer\u003c\/li\u003e\n  \u003cli\u003eMuốn cách ly hoàn toàn work của Claude Code khỏi branch chính\u003c\/li\u003e\n  \u003cli\u003eCI\/CD pipeline cần build nhiều branch đồng thời\u003c\/li\u003e\n  \u003cli\u003eTác vụ refactor lớn cần chia thành nhiều phần độc lập\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eKhông cần dùng khi\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eChỉ làm việc trên một tác vụ tại một thời điểm\u003c\/li\u003e\n  \u003cli\u003eDự án nhỏ, chuyển branch nhanh và không có work-in-progress\u003c\/li\u003e\n  \u003cli\u003eỔ đĩa hạn chế — mỗi worktree chiếm dung lượng working directory\u003c\/li\u003e\n  \u003cli\u003eTác vụ đơn giản mà git stash đã đủ\u003c\/li\u003e\n  \u003cli\u003eCác tác vụ phụ thuộc lẫn nhau chặt chẽ — merge sẽ conflict nhiều\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eMẹo thực hành\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiới hạn số worktree:\u003c\/strong\u003e Tối đa 3-5 worktree cùng lúc. Nhiều hơn sẽ khó quản lý và tốn tài nguyên\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDùng tmux hoặc terminal tabs:\u003c\/strong\u003e Mỗi worktree một tab, đặt tên tab theo tác vụ để dễ theo dõi\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCommit thường xuyên trong worktree:\u003c\/strong\u003e Nhắc Claude commit theo từng milestone nhỏ, không đợi hoàn thành toàn bộ\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReview trước khi merge:\u003c\/strong\u003e Dùng git diff main..task-branch để review toàn bộ thay đổi trước khi merge\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eShared CLAUDE.md:\u003c\/strong\u003e Đặt hướng dẫn chung trong CLAUDE.md ở root repo — tất cả worktree đều thấy file này\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eBước tiếp theo\u003c\/h2\u003e\n\u003cp\u003eGit worktrees kết hợp với Claude Code tạo nên workflow phát triển song song hiệu quả — đặc biệt khi bạn muốn tận dụng tối đa khả năng của AI agent bằng cách chạy nhiều instance đồng thời. Bắt đầu bằng việc thử tạo một worktree cho hotfix tiếp theo, trải nghiệm cảm giác không phải stash và chuyển branch. Khi đã quen, thử workflow multi-agent với 2-3 worktree song song. Tìm hiểu thêm các kỹ thuật nâng cao tại \u003ca href=\"\/collections\/nang-cao\"\u003eThư viện Nâng cao Claude\u003c\/a\u003e.\u003c\/p\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":66959059025965,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0763\/9531\/5245\/files\/git-worktrees-trong-claude-code-phat-tri_n-song-song-khong-xung-d_t.jpg?v=1782892457","url":"https:\/\/claudeae.com\/products\/git-worktrees-trong-claude-code-phat-tri%e1%bb%83n-song-song-khong-xung-d%e1%bb%99t","provider":"Claude.vn","version":"1.0","type":"link"}