Git Worktrees là gì và tại sao bạn nên sử dụng chúng?
Khám phá Git worktrees, giải pháp giúp lập trình viên quản lý nhiều luồng công việc song song mà không cần stash hay chuyển đổi branch phức tạp.
Dù đã xuất hiện từ năm 2015, khái niệm Git worktrees gần đây mới thực sự trở nên phổ biến trong cộng đồng phát triển phần mềm. Nếu bạn từng cảm thấy mệt mỏi với việc phải git stash, chuyển đổi branch liên tục hay thậm chí là clone nhiều bản sao của cùng một repository chỉ để xử lý các tác vụ khẩn cấp, thì worktrees chính là giải pháp dành cho bạn.
Table Of Content
Vấn đề của việc chuyển đổi ngữ cảnh (Context Switching)
Trong quy trình làm việc truyền thống, khi đang thực hiện một tính năng dở dang mà cần xử lý một lỗi khẩn cấp (hotfix), bạn thường phải:
- Sử dụng
git stashđể lưu tạm các thay đổi hiện tại. - Chuyển về branch chính (main/master) và cập nhật code.
- Tạo branch mới cho hotfix, sửa lỗi, commit và push.
- Sau khi merge, quay trở lại branch cũ,
git stash popvà đối mặt với nguy cơ xung đột (conflict) hoặc phải cài đặt lại các dependency.
Quá trình này không chỉ tốn thời gian mà còn gây áp lực lớn lên khả năng tập trung của lập trình viên.
Sức mạnh của Git Worktrees
Với git worktree, bạn có thể duy trì nhiều thư mục làm việc khác nhau từ cùng một repository. Thay vì chuyển đổi branch trong cùng một thư mục, bạn tạo ra một thư mục mới (sibling folder) cho mỗi tác vụ:
git worktree add ../hotfix-workspace -b hotfix-bug main
Lệnh này tạo ra một thư mục mới hoàn toàn độc lập, cho phép bạn mở một cửa sổ editor riêng biệt để xử lý hotfix mà không làm ảnh hưởng đến công việc đang dang dở ở cửa sổ cũ. Sau khi hoàn tất, bạn chỉ cần xóa thư mục tạm này là xong.
Tại sao xu hướng này lại bùng nổ?
Sự phát triển của AI và văn hóa code review đã thay đổi cách chúng ta làm việc. Việc chạy nhiều phiên làm việc song song (parallel sessions) trở thành nhu cầu thiết yếu. Các công cụ hiện đại như GitHub Copilot đã tích hợp sẵn worktrees làm chế độ mặc định để tối ưu hóa trải nghiệm này.
Những lưu ý quan trọng
Dù rất tiện lợi, bạn cần cân nhắc một số điểm sau:
- Tốn dung lượng: Mỗi worktree yêu cầu một bản sao riêng của các dependency (như
node_modules), có thể làm đầy ổ cứng nhanh chóng. - Quản lý thư mục: Bạn cần chủ động xóa các thư mục worktree không còn sử dụng để tránh lộn xộn.
- Cấu hình .gitignore: Nếu tạo worktree bên trong thư mục repo chính, hãy đảm bảo đã thêm chúng vào
.gitignoređể tránh bị Git theo dõi nhầm. - Giới hạn branch: Git không cho phép checkout cùng một branch trong hai worktree khác nhau cùng lúc để tránh hỏng dữ liệu.
Tóm lại, Git worktrees là một công cụ mạnh mẽ giúp tăng năng suất đáng kể. Bạn có thể trải nghiệm tính năng này một cách tự nhiên nhất ngay trong ứng dụng GitHub Copilot.
Nguồn tham khảo: GitHub Blog


No Comment! Be the first one.