Git Worktree
Cập nhật lần cuối
git worktree cho phép một repository có nhiều thư mục làm việc cùng lúc, mỗi thư mục ở một nhánh khác nhau. Thay vì stash phần việc để chuyển nhánh, bạn checkout nhánh kia trong một thư mục riêng: review PR, sửa hotfix, hoặc build một nhánh trong khi sửa nhánh khác, tất cả dùng chung lịch sử .git.
Bạn có thể thử các lệnh này trong terminal playground: một shell thật ngay trên trình duyệt, không cần cài đặt gì.
Cú pháp
| Lệnh | Tác dụng |
|---|---|
git worktree add ../hotfix hotfix | Checkout hotfix trong một thư mục ngang cấp |
git worktree add -b new ../new | Tạo một nhánh cùng worktree cho nó |
git worktree list | Liệt kê mọi worktree và nhánh của chúng |
git worktree remove ../hotfix | Xóa một worktree |
git worktree prune | Dọn các mục worktree không còn dùng |
Ví dụ từng bước
Sửa lỗi trên main mà không ảnh hưởng tới nhánh tính năng.
| Bước | Lệnh | Kết quả |
|---|---|---|
| 1 | git worktree add ../fix main | main được checkout trong ../fix |
| 2 | Sửa và commit trong ../fix | Hotfix trên main đã xong |
| 3 | git worktree remove ../fix | Dọn dẹp; nhánh tính năng không hề bị động tới |
Câu hỏi thường gặp về git worktree
Git worktree là gì?
.git, nên không cần stash hay clone để làm việc trên hai nhánh một lúc.Làm sao thêm một worktree?
git worktree add <path> <branch>, ví dụ git worktree add ../hotfix hotfix. Git checkout nhánh đó vào thư mục mới. Để tạo nhánh mới cùng lúc, dùng git worktree add -b <newbranch> <path>.Khi nào nên dùng worktree thay vì chuyển nhánh?
Dùng khi việc chuyển nhánh gây gián đoạn: bạn có phần việc chưa commit, một lần build dài không muốn bị ngắt, hoặc cần so sánh hai nhánh song song. Worktree cho bạn nhánh kia trong thư mục riêng mà không động tới nhánh hiện tại.
Làm sao xóa một worktree?
git worktree remove <path>. Nếu thư mục đã bị xóa thủ công, chạy git worktree prune để dọn phần thông tin quản lý cũ. Bạn không thể xóa worktree chính (thư mục repo gốc), chỉ xóa được các worktree bổ sung mà bạn đã thêm.Có thể luyện tập lệnh này online không?
git worktree trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn từng bước các quy trình làm việc với nhánh.