Git: Xóa một nhánh local
Cập nhật lần cuối
Khi công việc trên một nhánh đã được merge, bạn xóa nhánh đó bằng git branch -d <branch>. Git sẽ từ chối nếu nhánh có commit chưa được merge vào đâu cả, đây là một bước kiểm tra an toàn. Để vẫn xóa, dùng -D viết hoa. Xóa nhánh local không bao giờ ảnh hưởng đến bản sao trên remote; việc đó cần một lệnh riêng.
Thử các lệnh này trong playground terminal: 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 branch -d feature | Xóa feature (chỉ khi đã merge) |
git branch -D feature | Xóa cưỡng bức feature kể cả khi chưa merge |
git branch -d branch1 branch2 | Xóa nhiều nhánh cùng lúc |
Tình huống thường gặp
| Mục tiêu | Lệnh |
|---|---|
| Xóa một nhánh đã merge | git branch -d old-feature |
| Xóa cưỡng bức một nhánh chưa merge | git branch -D scratch |
| Xóa nhánh bạn đang đứng | git switch main rồi git branch -d feature |
| Xem những nhánh nào đã merge | git branch --merged |
Ví dụ minh họa
Hoàn thành một tính năng, merge nó rồi dọn nhánh local.
| Bước | Lệnh | Kết quả |
|---|---|---|
| 1 | git switch main | Rời khỏi nhánh bạn muốn xóa |
| 2 | git merge feature | Đưa các commit của tính năng vào main |
| 3 | git branch -d feature | Xóa nhánh vừa được merge |
Câu hỏi thường gặp về xóa nhánh local
git branch -d và -D khác nhau thế nào?
-d là cách xóa an toàn: Git chỉ xóa nhánh nếu các commit của nó đã được merge vào nhánh khác, nên bạn không thể vô tình mất công sức. -D là xóa cưỡng bức (viết tắt của --delete --force): nó xóa nhánh bất kể thế nào, kể cả khi còn commit chưa merge. Mặc định hãy dùng -d, và chỉ dùng -D khi chắc chắn muốn bỏ đi các commit của nhánh đó.Làm sao để xóa nhánh mình đang đứng?
git switch main (hoặc git checkout main), rồi chạy git branch -d feature. Nếu bạn cố xóa nhánh hiện tại, Git sẽ báo lỗi "Cannot delete branch ... checked out".Xóa nhánh local có xóa nhánh trên GitHub không?
git branch -d chỉ xóa nhánh khỏi repository local của bạn. Nhánh trên remote (GitHub, GitLab, v.v.) vẫn còn cho đến khi bạn xóa riêng bằng git push origin --delete feature.Có khôi phục được nhánh đã xóa không?
git reflog để tìm commit mà nhánh từng trỏ tới, rồi tạo lại nhánh bằng git branch feature <commit-hash>. Các commit không bị dọn dẹp (garbage collection) ngay, nên một nhánh lỡ tay xóa thường vẫn khôi phục được.Có thể luyện tập lệnh này online không?
Có. Mở playground terminal để chạy các lệnh này trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khi muốn học có lộ trình, khóa học Git tương tác miễn phí của Coddy dẫn bạn từ commit đầu tiên đến tạo nhánh và merge từng bước.