Menu
CoddyTech

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ì.

git worktree mở nhánh thứ hai trong thư mục riêng: một repository, hai thư mục làm việc.

Cú pháp

LệnhTác dụng
git worktree add ../hotfix hotfixCheckout hotfix trong một thư mục ngang cấp
git worktree add -b new ../newTạo một nhánh cùng worktree cho nó
git worktree listLiệt kê mọi worktree và nhánh của chúng
git worktree remove ../hotfixXóa một worktree
git worktree pruneDọ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ướcLệnhKết quả
1git worktree add ../fix mainmain được checkout trong ../fix
2Sửa và commit trong ../fixHotfix trên main đã xong
3git worktree remove ../fixDọ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ì?
Worktree là một thư mục làm việc bổ sung gắn với cùng một repository, được checkout ở một nhánh hoặc commit khác. Nhờ nó, bạn có thể checkout nhiều nhánh cùng lúc trong các thư mục riêng, tất cả dùng chung một lịch sử .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?
Chạy 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?
Chạy 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?
Có. Mở terminal playground để chạy 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.
Hình minh họa các ngôn ngữ lập trình của Coddy

Học Git cùng Coddy

Bắt đầu