Git Worktree: Quản lý nhiều branch đồng thời trên cùng repo

Git Worktree là gì

Bạn đang phát triển tính năng feature/A, rồi hotfix cấp bách từ branch main chen ngang. Thông thường bạn phải stash, checkout, sau đó quay lại và restore. git worktree giải quyết vấn đề này — cho phép checkout nhiều branch cùng lúc vào các thư mục riêng biệt.

Theo Git documentation, worktree tạo ra các working directory riêng biệt, mỗi cái liên kết với cùng một repository. Mỗi worktree có branch riêng, working directory riêng, và bạn có thể làm việc trên cả hai đồng thời.

Cách dùng Git Worktree cơ bản

cấu trúc thư mục worktree so sánh với git checkout thông thường

Lệnh cơ bản để tạo worktree:

# Tạo worktree mới từ branch feature/x
git worktree add ../project-feature-x feature/x

# Hoặc tạo branch mới + worktree cùng lúc
git worktree add -b feature/y ../project-feature-y main

Sau lệnh này, bạn có 2 thư mục:

  • project/ — chứa branch cũ (VD: đang code feature/A)
  • project-feature-x/ — chứa branch feature/x

Mở 2 terminal, mỗi cái cd vào 1 thư mục, code song song mà không cần checkout liên tục.

Lệnh quản lý worktree

# Liệt kê tất cả worktree đang active
git worktree list

# Xóa worktree không còn dùng
git worktree remove ../project-feature-x

# Move worktree sang chỗ khác
git worktree move ../project-feature-x ../old-feature-x

Lưu ý về .git folder

Mỗi worktree có file .git riêng (không phải folder), trỏ về shared .git/worktrees/ trong repo gốc. Config local, stash, và reflog được chia sẻ — nên stash trong worktree này sẽ xuất hiện ở worktree kia.

Workflow thực tế: Hotfix + Feature song song

# Bạn đang code feature/auth ở thư mục chính
# Cần hotfix cấp bách trên main
git worktree add ../project-hotfix main

# cd vào hotfix, sửa, commit, push
cd ../project-hotfix
git commit -am "hotfix: fix login crash"
git push origin main

# Quay lại feature như bình thường
cd ../project
git merge main  # feature giờ có hotfix

terminal split screen hiển thị 2 worktree song song: feature vs hotfix

So sánh worktree vs stash vs branch thông thường

Kỹ thuật Switch time Parallel work Cleanup
git checkout Medium Không Dễ
git stash Fast Không Rủi ro quên apply
git worktree 0 (đồng thời) Có Phải remove thủ công

Best Practices

  • Đặt tên worktree rõ ràng: ../repo-feature-x, không phải ../tmp
  • Xóa worktree sau khi merge: git worktree remove để tránh clutter
  • Không push từ worktree: worktree là cho local development, CI/CD vẫn dùng branch chính
  • Monitor disk: mỗi worktree có full copy working files, nhiều worktree = nhiều dung lượng
  • Dùng cho hotfix + review: tách review sang worktree, không cần disrupt work hiện tại

Git worktree là công cụ ít developer biết đến nhưng cực kỳ hữu ích khi bạn cần context-switch liên tục. Đặc biệt hiệu quả khi review PR: checkout PR vào worktree, xem xong xóa đi, không ảnh hưởng branch đang làm việc.

Nguồn tham khảo: Git Worktree Documentation, Atlassian Git Tutorials

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Debugging là gì: quy trình, kỹ thuật và công cụ tìm lỗi

Debugging là gì: quy trình, kỹ thuật và công cụ tìm lỗi phần mềm Debugging là quá trình phát hiện, cô lập và khắc phục lỗi trong phần mềm. Từ…

Xem thêm

Terraform là gì: công cụ Infrastructure as Code của HashiCorp

Terraform là gì: công cụ Infrastructure as Code của HashiCorp Terraform là một công cụ Infrastructure as Code (IaC) do HashiCorp phát triển, cho phép người dùng khai báo và…

Xem thêm

Fortran là gì: ngôn ngữ lập trình cho tính toán khoa học

Fortran là gì: ngôn ngữ lập trình cho tính toán khoa học Fortran là gì? Đây là ngôn ngữ lập trình cao cấp được thiết kế riêng cho các bài…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất