Chú ý: Chào mừng bạn đến với Snettech!

Git Worktree: Mẹo Làm Nhiều Nhánh Code Không Đổi Thư Mục


Lập trình viên đang sửa lỗi gấp thường gặp tình huống khó xử khi nhánh hiện tại chứa nhiều thay đổi chưa sẵn sàng commit. Nếu chuyển nhánh ngay, Git có thể từ chối thao tác hoặc người dùng phải tạm cất công việc vào stash rồi tìm cách lấy lại sau. Git worktree cho phép dùng nhiều thư mục làm việc có liên kết với cùng một repository, nhờ đó mỗi nhiệm vụ có không gian riêng mà không phải clone toàn bộ dự án nhiều lần. Bài viết trình bày cách thiết lập, kịch bản áp dụng và các lưu ý bảo vệ dữ liệu cần biết.

Theo tài liệu Git chính thức, mỗi worktree có thư mục làm việc và chỉ mục riêng, còn nhiều thành phần của repository được chia sẻ. Cơ chế này phù hợp với tình huống vừa phát triển tính năng mới, vừa cần sửa sự cố trên nhánh phát hành mà không muốn phá vỡ môi trường hiện tại. Hiểu rõ mức chia sẻ dữ liệu giúp tránh nhầm lẫn khi xóa nhánh, di chuyển thư mục hay thiết lập biến môi trường cho dự án.

 Git Worktree để làm việc trên nhiều nhánh code cùng lúc mà không cần đổi thư mục Git Worktree để làm việc trên nhiều nhánh code cùng lúc mà không cần đổi thư mục (Ảnh: Snettech)

Cách Tạo Git Worktree Cho Hai Nhiệm Vụ Song Song

Kiểm Tra Repository Trước Khi Mở Thư Mục Mới

Tại thư mục dự án gốc, chạy git status để biết nhánh hiện tại và những thay đổi chưa commit. Sau đó dùng lệnh git branch --list kiểm tra tên nhánh sẵn có, đồng thời xác định thư mục đích của worktree mới nằm ngoài vị trí chứa mã nguồn hiện tại. Cách tổ chức thường gặp là đặt các thư mục cùng cấp, chẳng hạn du-an và du-an-hotfix, để dễ nhận biết. Hãy bảo đảm ổ đĩa có đủ chỗ cho file làm việc mới và không đặt worktree vào thư mục đang chứa dữ liệu cần giữ.

Trước khi chạy lệnh tạo, nên thống kê các file môi trường như .env, cấu hình kết nối hoặc chứng chỉ dùng khi chạy ứng dụng tại máy riêng. Những file bị bỏ qua bởi .gitignore có thể không tự xuất hiện ở thư mục worktree mới, gây lỗi khi chạy thử. Điều này cũng giúp hai nhiệm vụ chạy song song mà không giành cổng mạng hoặc ghi vào cùng cơ sở dữ liệu thử nghiệm.

Tạo Nhánh Hotfix Bằng Git Worktree Add

Một lệnh ví dụ là git worktree add -b hotfix/login ../du-an-hotfix main, dùng để tạo nhánh hotfix/login từ main và mở nó tại thư mục cùng cấp. Nếu nhánh đã tồn tại, hãy đọc tài liệu git worktree add để sử dụng cách tham chiếu phù hợp thay vì tạo trùng tên. Sau khi chạy, lệnh git worktree list sẽ liệt kê các thư mục và nhánh đang được liên kết với repository. Hãy chuyển vào thư mục mới rồi kiểm tra git status một lần nữa để xác nhận bạn đang sửa đúng mã nguồn dự định.

Git thường không cho cùng một nhánh được checkout đồng thời ở nhiều worktree, nhằm hạn chế các thao tác gây hiểu nhầm trạng thái. Vì vậy, nếu gặp cảnh báo nhánh đang được sử dụng, đừng vội thêm tùy chọn cưỡng ép mà chưa tìm đúng thư mục đang giữ nhánh đó. Khi hoàn thành, bạn có thể tạo pull request như quy trình nhóm đang dùng mà không cần chuyển qua lại các thư mục trong cùng cửa sổ làm việc.

Các thư mục nhánh code được phân tách độc lập và trực quan trong trình quản lý tệpCác thư mục nhánh code được phân tách độc lập và trực quan trong trình quản lý tệp (Ảnh: Snettech)

Mẹo Quản Lý Worktree Khi Lập Trình Nhóm

Phân Tách Phụ Thuộc Và Quy Trình Kiểm Thử

Dù các worktree dùng chung repository, những tệp tạo ra trong quá trình cài phụ thuộc có thể khác nhau giữa từng thư mục. Một ứng dụng Node.js có thể có thư mục node_modules riêng cho mỗi worktree, trong khi dự án Python thường cần môi trường ảo độc lập để tránh xung đột thư viện. Tách môi trường kiểm thử giúp bạn tránh nhầm lỗi do phiên bản công cụ với lỗi phát sinh từ thay đổi mã nguồn.

Trong bài toán học lập trình, bạn có thể dành worktree thứ hai cho thí nghiệm không muốn ảnh hưởng bài nộp đang hoàn thiện. Hãy chạy bộ kiểm thử trong từng thư mục và ghi kết quả ngay sau commit để người đánh giá hiểu mã nào đã được kiểm tra. Worktree tiết kiệm thao tác chuyển nhánh, nhưng vẫn yêu cầu người dùng giữ kỷ luật với tên nhánh, commit và trạng thái dữ liệu.

Tránh Nhầm Lẫn Khi Dùng IDE Và Công Cụ AI

Hai cửa sổ trình soạn thảo có thể cùng hiển thị tên dự án nhưng trỏ tới các worktree khác nhau, khiến người dùng vô tình sửa đúng file ở sai nhánh. Hãy đặt tên workspace rõ ràng, kiểm tra đường dẫn ở terminal và dùng git status trước mỗi chuỗi thay đổi quan trọng. Cách làm này giúp giảm khả năng tác nhân tự động tác động lên phiên bản khác với nhiệm vụ bạn định giao. Các công cụ tự động hỗ trợ lập trình không thay thế trách nhiệm kiểm tra diff trước khi commit hoặc gửi pull request. 

Giao diện lập trình cho phép lập trình viên sửa lỗi ở hai nhánh mã nguồn khác nhau song songGiao diện lập trình cho phép lập trình viên sửa lỗi ở hai nhánh mã nguồn khác nhau song song (Ảnh: Snettech)

Dọn Dẹp Git Worktree Mà Không Làm Mất Thay Đổi

Kiểm Tra Trạng Thái Trước Khi Remove

Sau khi hoàn tất hotfix và gộp vào nhánh chính, chạy git worktree list để xác định thư mục không còn cần thiết. Tiếp theo, mở thư mục cần xóa và kiểm tra git status, đảm bảo mọi thay đổi quan trọng đã được commit hoặc sao lưu. Lệnh git worktree remove ../du-an-hotfix có thể gỡ worktree sạch ra khỏi danh sách, nhưng sẽ từ chối nếu dữ liệu chưa được xử lý theo điều kiện mặc định. Việc từ chối này là cơ chế hữu ích giúp ngăn người dùng vô tình xóa công việc chưa hoàn tất.

Không nên dùng --force như cách giải quyết tự động mỗi khi gặp thông báo không thể gỡ thư mục. Tùy chọn này có thể bỏ qua những điều kiện an toàn, nên chỉ sử dụng khi đã kiểm tra đầy đủ dữ liệu và hiểu hậu quả. Người dùng nên quyết định riêng việc lưu hay xóa nhánh theo quy định nhóm, đặc biệt khi bản vá còn cần đối chiếu với lịch sử phát hành.

Xử Lý Worktree Bị Di Chuyển Hoặc Mất Liên Kết

Nếu bạn tự ý chuyển thư mục bằng trình quản lý file, metadata liên quan trong Git có thể không còn khớp đường dẫn mới. Tài liệu Git có lệnh git worktree repair để hỗ trợ sửa liên kết trong một số trường hợp như vậy. Khi biết thư mục chỉ tạm thời không khả dụng, hãy đọc thêm về tính năng lock trước khi áp dụng những lệnh dọn metadata.

Lệnh git worktree prune dành cho metadata của những worktree không còn tồn tại, chứ không phải công cụ dọn cache vô hại trong mọi tình huống. Trước khi sử dụng, hãy kiểm tra git worktree list và tình trạng của ổ lưu trữ để tránh tạo lỗi kết nối không mong muốn. Quy trình quản lý cẩn trọng sẽ làm worktree trở thành công cụ hỗ trợ năng suất thay vì nguồn phát sinh sự cố mới.

Git worktree giúp lập trình viên mở nhiều không gian làm việc cho các nhánh khác nhau mà không phải liên tục cất và lấy thay đổi chưa hoàn thiện. Mẹo hữu ích nằm ở việc đặt tên thư mục rõ ràng, kiểm tra nhánh trước khi sửa và giữ môi trường kiểm thử độc lập cho từng nhiệm vụ. Khi dọn dẹp, cần dùng git status, git worktree list và lệnh remove phù hợp thay vì xóa cưỡng ép theo thói quen. Nếu triển khai có kỷ luật, kỹ thuật này sẽ hỗ trợ xử lý hotfix, học lập trình và cộng tác nhóm thuận tiện hơn.

BÀI VIẾT CÙNG CHUYÊN MỤC


Bình luận Facebook:

0383697284