Bỏ qua đến nội dung chính
Về trang chủ
Tech tools-ai 5 phút đọc

Git Worktrees: Chìa khóa đa nhiệm trong phát triển phần mềm? 🔑🚀

Git worktrees, được giới thiệu từ 2015, là tính năng giúp lập trình viên làm việc song song trên nhiều nhánh mã của cùng một kho lưu trữ trong các thư mục riêng biệt, loại bỏ nhu cầu stash hay thay đổi ngữ cảnh khi chuyển đổi tác vụ.

Tier 1 · nguồn 99% độ tin cậy Auto-priority
Nguồn gốc github.blog

Nguồn: GitHub Blog Tác giả: Cassidy Williams (Giám đốc cấp cao về Phát triển Cộng đồng, GitHub) Ngày: 16 tháng 6, 2026

---

Tóm tắt chính

Git worktrees (ra mắt năm 2015) đã trở nên phổ biến mạnh mẽ. Tính năng này cho phép các nhà phát triển làm việc đồng thời trên nhiều nhánh (branch) của một kho lưu trữ (repository) trong các thư mục riêng biệt. Điều này loại bỏ nhu cầu stash các thay đổi hoặc làm gián đoạn ngữ cảnh trình soạn thảo khi chuyển đổi tác vụ (ví dụ: tạm dừng phát triển tính năng để xử lý lỗi khẩn cấp).

---

Vấn đề: Chuyển đổi ngữ cảnh truyền thống (Stash & Branching) 😩

Trong quy trình làm việc truyền thống, việc chuyển từ một nhánh tính năng (feature branch) sang sửa một lỗi khẩn cấp (urgent bug) đòi hỏi một quy trình tốn kém bao gồm stash các thay đổi, chuyển nhánh, cập nhật, sửa lỗi và sau đó unstash:

```bash # Stash công việc hiện tại git stash "wip feature login"

Chuyển sang nhánh chính và cập nhật

git checkout main git pull origin main

Tạo và chuyển sang nhánh sửa lỗi

git checkout -b hotfix-bug

Sửa, commit và push

git add . git commit -m "fix broken submit button" git push origin hotfix-bug

Sau khi merge, quay lại nhánh chính, cập nhật và xóa nhánh lỗi

git checkout main git pull origin main git branch -d hotfix-bug

Quay lại tính năng ban đầu và khôi phục công việc đã stash

git checkout feature-login git stash pop ``` Nhược điểm: Gánh nặng tinh thần lớn, phải tải lại các tệp (file), cài đặt lại các thư viện phụ thuộc (ví dụ: node_modules), và rủi ro xung đột khi unstash.

---

Giải pháp: Chuyển đổi ngữ cảnh với Worktrees ✨

Với worktrees, bạn không bao giờ phải rời khỏi nhánh hiện tại hay stash công việc của mình. Ngữ cảnh trình soạn thảo ban đầu của bạn vẫn hoàn toàn không bị gián đoạn.

1. Tạo Worktree

Lệnh này ngay lập tức tạo một thư mục song song có tên hotfix-workspace, dựa trên nhánh main, và checkout một nhánh mới có tên hotfix-bug: bash git worktree add ../hotfix-workspace -b hotfix-bug main

2. Làm việc trong thư mục mới

Mở thư mục mới trong một cửa sổ trình soạn thảo hoặc terminal riêng biệt để sửa và push lỗi: bash cd ../hotfix-workspace # ...sửa lỗi sửa lỗi sửa lỗi... git add . git commit -m "fix broken submit button" git push origin hotfix-bug

3. Dọn dẹp

Khi pull request đã được merge, quay lại thư mục dự án chính của bạn và xóa worktree tạm thời: bash cd ../main-project git worktree remove ../hotfix-workspace Lợi ích: Không rủi ro xung đột stash, không gián đoạn trình soạn thảo, và phát triển song song thực sự.

---

Tại sao Worktrees lại phổ biến hiện nay? 📈

* Rào cản lịch sử: Trước đây, các công cụ GUI của Git ít hỗ trợ worktrees, khiến nhà phát triển thường theo quy trình tuyến tính và ngại thử nghiệm. * Sự trỗi dậy của AI & Song song hóa: Phát triển phần mềm hiện đại phụ thuộc nhiều vào các phiên làm việc song song. Các tác nhân AI và con người thường xuyên hợp tác trên nhiều tác vụ cùng lúc, yêu cầu khả năng chuyển đổi ngữ cảnh mượt mà. * Tích hợp công cụ: Worktrees đã trở thành chế độ mặc định cho nhiều công cụ hiện đại, bao gồm cả ứng dụng GitHub Copilot.

---

Những hạn chế & cân nhắc ("Cái giá phải trả") ⚠️

* Phình to thư viện phụ thuộc: Mỗi thư mục worktree cần một bản sao riêng của các thư viện phụ thuộc dự án (ví dụ: node_modules). Việc chạy cài đặt trên nhiều worktree có thể nhanh chóng chiếm dụng không gian đĩa của bạn. * Quản lý thư mục: Bạn phải chủ động xóa các thư mục worktree để ngăn chặn làm lộn xộn thư mục cha (mặc dù một số công cụ có thể tự động hóa việc này). * Yêu cầu .gitignore toàn cục: Nếu bạn tạo worktrees bên trong thư mục kho lưu trữ chính, bạn phải thêm chúng vào .gitignore để tránh bị theo dõi. (Lưu ý: Tạo worktrees bên ngoài thư mục kho lưu trữ chính sẽ tránh được vấn đề này). * Giới hạn một nhánh: Git ngăn bạn checkout cùng một nhánh trong hai worktrees khác nhau cùng lúc để ngăn chặn hỏng dữ liệu.

---

Worktrees trong ứng dụng GitHub Copilot 🤖

Worktrees được tích hợp nguyên bản vào ứng dụng GitHub Copilot, đơn giản hóa trải nghiệm phát triển AI: 1. Trên màn hình chính, tùy chọn mặc định để chạy một phiên mới là "New worktree" (các tùy chọn thay thế bao gồm "Local repository" hoặc "Cloud"). 2. Khi một phiên bắt đầu, ứng dụng tự động tạo một tên và đường dẫn duy nhất cho worktree, theo dõi tất cả các thay đổi trong không gian làm việc cô lập đó.