Sửa lỗi Git 'fatal: clean.requireForce defaults to true'

beginner📦 Git2026-07-26| Lỗi này ảnh hưởng đến tất cả các nền tảng (Windows, macOS, Linux) sử dụng phiên bản Git 1.7.0 trở lên. Nó xảy ra bất cứ khi nào bạn chạy lệnh 'git clean' mà không có flag hành động bắt buộc.

Error Message

fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
#git#git-clean#devops#terminal

Tại sao Git lại chặn bạn

Hãy coi lỗi này như một chiếc dây đai an toàn được tích hợp sẵn của Git. Vì git clean là một lệnh mang tính hủy diệt, nên không có nút "Hoàn tác" (Undo) hay Thùng rác (Recycle Bin) nào cả. Một khi tệp bị xóa thông qua lệnh này, nó sẽ biến mất khỏi ổ cứng của bạn mãi mãi.

Theo mặc định, Git thiết lập cấu hình clean.requireForce thành true. Nó sẽ từ chối thực hiện việc xóa trừ khi bạn chứng minh rõ ràng rằng mình biết mình đang làm gì. Để bỏ qua điều này, bạn phải cung cấp một flag cụ thể như -f, -n, hoặc -i. Lớp bảo vệ này ngăn chặn việc một lỗi đánh máy đơn giản có thể xóa sạch toàn bộ công sức làm việc chưa commit cả tuần của bạn.

Khi nào lỗi này thường xảy ra

Cơ chế bảo vệ này hoạt động trên mọi bản cài đặt Git, cho dù bạn đang sử dụng Linux shell cơ bản hay Terminal trong VS Code. Bạn có thể sẽ gặp lỗi này khi dự án của mình trở nên lộn xộn với các tệp build như .log, thư mục dist/, hoặc các tệp tạm thời .tmp chưa được thêm vào .gitignore.

Cách khắc phục lỗi

1. Phương pháp "Nhìn trước khi nhảy" (An toàn nhất)

Luôn bắt đầu bằng một lần chạy thử (dry run). Flag -n (hoặc --dry-run) yêu cầu Git hiển thị chính xác những gì nó dự định xóa mà không thực sự chạm vào bất kỳ tệp nào.

git clean -n

Nếu bạn muốn xem những thư mục chưa được theo dõi nào cũng sẽ bị xóa, hãy thêm flag -d:

git clean -nd

Kết quả đầu ra có thể giống như: Sẽ xóa debug.log hoặc Sẽ xóa temp_assets/.

2. Flag Force (-f)

Sau khi bạn đã xác minh danh sách và sẵn sàng xóa các tệp, hãy sử dụng flag -f (force). Đây là cách phổ biến nhất để xử lý lỗi này.

git clean -f

Để xóa cả các tệp chưa được theo dõi và các thư mục trống, hãy kết hợp các flag:

git clean -fd

Mẹo nhỏ: Để xóa cả các tệp bị bỏ qua (ignored files)—chẳng hạn như thư mục node_modules nặng 500MB hoặc các tệp .pyc đã biên dịch—hãy thêm flag -x:

git clean -fx

3. Chế độ tương tác (-i)

Nếu bạn có hàng tá tệp chưa được theo dõi nhưng chỉ muốn xóa một vài tệp cụ thể, hãy sử dụng chế độ tương tác. Nó sẽ khởi chạy một giao diện menu ngay trong terminal của bạn.

git clean -i

Từ đây, bạn có thể lọc theo mẫu hoặc chọn tệp theo số thứ tự. Đây là một giải pháp trung gian tuyệt vời giữa tùy chọn force "hủy diệt" và quy trình xóa tệp thủ công chậm chạp.

4. Vô hiệu hóa lớp bảo vệ (Cẩn trọng khi dùng)

Bạn có thể yêu cầu Git ngừng hỏi flag force bằng cách thay đổi cài đặt global. Tuy nhiên, hầu hết các lập trình viên kỳ cựu đều khuyên không nên làm điều này vì nó khiến bạn quá dễ dàng mất dữ liệu do vô ý.

git config --global clean.requireForce false

Khi tắt cài đặt này, lệnh git clean sẽ chạy ngay lập tức. Chỉ một lần nhấn phím sai có thể khiến bạn mất hàng giờ công sức.

Xác minh kết quả

Sau khi chạy lệnh đã chọn, hãy kiểm tra lại workspace để đảm bảo nó thực sự sạch sẽ:

  • Chạy git status. Danh sách "Untracked files" sẽ trống hoặc ngắn hơn đáng kể.
  • Thử chạy lại git clean -n. Nếu nó không trả về kết quả nào, thư mục của bạn đã hoàn toàn sạch sẽ.
  • Sử dụng ls -la hoặc trình duyệt tệp của bạn để xác nhận rằng các thư mục nặng cụ thể (như /build) đã biến mất.

Thực hành tốt nhất để có quy trình làm việc sạch sẽ hơn

  • Luôn cập nhật .gitignore: Nếu bạn thấy mình phải dọn dẹp npm-debug.log mỗi ngày, hãy thêm nó vào .gitignore. Thà bỏ qua những thứ lộn xộn còn hơn là cứ phải xóa chúng liên tục.
  • Stash thay vì xóa: Bạn không chắc mình có cần những tệp đó sau này không? Hãy sử dụng git stash -u. Lệnh này sẽ chuyển các tệp chưa được theo dõi vào bộ nhớ tạm thời để bạn có thể khôi phục nếu nhận ra mình đã nhầm lẫn.
  • Tập thói quen chạy thử: Chỉ mất hai giây để chạy git clean -n. Thói quen nhỏ đó có thể ngăn chặn cơn ác mộng vô tình xóa mất một tệp mã nguồn mới mà bạn quên chưa git add.

Related Error Notes