Dùng lệnh git clean xóa file chưa theo dõi. -fd xóa thư mục chưa theo dõi, git clean -fx xóa file ignored và non-ignored. Có thể xóa file chưa theo dõi qua file .gitignore.
Trong kho Git có 2 loại file: tracked (đã theo dõi) và untracked (chưa theo dõi). Có lúc cần xóa file untracked.
Khi nào xóa file untracked?
- Thư mục làm việc lộn xộn file không dùng
- Trỏ Git nhầm thư mục
- File dư từ merge khác, hoặc muốn xóa file cụ thể
Git xóa file untracked
Xử lý file untracked bằng:
- File
.gitignore– bỏ qua file/thư mục git clean -fx– xóa file untracked và ignoredgit clean -fd– xóa file và thư mục untracked
Hướng dẫn chi tiết cách xóa file untracked với Git.
Khác biệt Tracked vs Untracked
Trong thư mục làm việc, file hoặc tracked hoặc untracked. Tracked: file đã add/commit ở snapshot trước, Git nhận biết và theo dõi thay đổi. Untracked: file không có trong commit trước, chưa stage để commit. Có thể stage+commit hoặc xóa.
Chạy git status sau sửa/thêm file sẽ thấy danh sách untracked và tracked.
Cách 1: .gitignore
Bỏ qua file không muốn theo dõi. Ví dụ: dự án C++ sinh file build không cần, file .env chứa biến môi trường, API key – không muốn lộ ra ngoài. File .gitignore giải quyết vấn đề này.
File trong .gitignore sẽ không nằm trong luồng untracked/tracked của Git. Git bỏ qua, không theo dõi cũng không phàn nàn.
Tạo .gitignore ở root, khai báo đường dẫn tương đối. Ví dụ bỏ qua node_modules và config.env:
node_modules config.env
Hiểu .gitignore quan trọng khi dự án lớn: biết thư mục/file nào cần thêm để tránh stage nhầm file nhạy cảm.
Cách 2: git clean
Lệnh git clean xóa file untracked khỏi kho. Bắt đầu từ thư mục làm việc hiện tại (working tree = nhánh đang xem).
Hữu ích khi vô tình thêm thư mục ảnh cá nhân vào kho thay vì thư mục dự án.
Cú pháp:
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
Lưu ý: git clean xóa file vĩnh viễn (hard delete), không undo được. Tương tự lệnh rm terminal. Nếu file đã track ở commit trước, có thể tìm lại phiên bản cũ.
git clean -d -n (Dry run)
Không chỉ định path thì thường dùng -d để Git xem vào thư mục untracked. Dùng -n (dry run) trước: Git cảnh báo file sẽ xóa trước khi xóa thật. An toàn tránh xóa nhầm.
git clean -f (Force)
Để git clean chạy, thường cần cờ force. Chỉ dùng khi chắc chắn muốn xóa file đã chọn.
Xóa file sillyPicture.jpg: git clean -f hoặc git clean -f sillyPicture.jpg.
Sau xóa, git status không còn file đó. -f không xóa file ignored vì chỉ làm việc với file Git nhận biết.
git clean -x
Khuyên không dùng trừ khi rất hiểu. Xóa cả file ignored và thư mục. git clean -d -x -f xóa sạch. Cẩn thận!
git clean -d -i (Interactive)
Khuyên cho người mới. Giao diện tương tác chọn file xóa. An toàn hơn dry run.
Kết luận
Xóa file untracked bằng .gitignore hoặc git clean. Git clean xóa đệ quy từ thư mục làm việc hiện tại. Xem thêm hướng dẫn học Git.