Chuyển đến nội dung chính

Git Clean: Xóa tệp chưa được theo dõi và giữ repo gọn gàng

Làm chủ git clean để xóa an toàn các tệp và thư mục chưa được theo dõi. Tìm hiểu các tùy chọn chính, chế độ tương tác và thực tiễn tốt nhất để ngăn mất dữ liệu.
· 8 phút đọc

Khám phá cùng AI

Khi làm việc trên một kho Git, việc tích lũy các tệp và thư mục chưa được theo dõi, không thuộc hệ thống quản lý phiên bản của kho, là điều thường gặp. Chúng có thể là tệp tạm, artefact khi build, hoặc các tệp tạo cục bộ khác không được commit. Theo thời gian, những tệp này có thể làm rối thư mục làm việc, khiến bạn khó duy trì một không gian làm việc sạch sẽ và ngăn nắp.

Để giải quyết vấn đề này, Git cung cấp lệnh git clean, dùng để xóa các tệp và thư mục chưa được theo dõi. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng git clean một cách an toàn, các tùy chọn khác nhau của nó và những thực tiễn tốt nhất để tránh vô tình xóa tệp trong khi vẫn giữ kho Git gọn gàng. Để học thêm, tôi khuyến nghị bạn học các khóa Foundations of Git và Introduction to GitHub Concepts để tìm hiểu về quản lý phiên bản và sự khác biệt giữa Git và GitHub.

Tìm hiểu git clean

Lệnh git clean là một công cụ hữu ích trong Git để xóa các tệp chưa được theo dõi khỏi thư mục làm việc. Lệnh git clean hữu ích khi bạn cần đặt lại thư mục làm việc về trạng thái nguyên bản, chẳng hạn trước khi chuyển nhánh hoặc sau khi chạy các quy trình build tạo ra tệp tạm. Tuy nhiên, cần thận trọng khi dùng git clean vì nó xóa vĩnh viễn các tệp và thư mục chưa được theo dõi mà không đưa chúng vào thùng rác.

Khác với git reset hoặc git checkout, vốn chỉnh sửa các tệp đã được theo dõi, git clean chỉ xử lý các tệp và thư mục không nằm trong quản lý phiên bản. Bao gồm:

  • Các tệp tạm do build tạo ra

  • Tệp log hoặc dữ liệu cache

  • Các tệp được liệt kê trong .gitignore (nếu chỉ định rõ với -x)

Lệnh git clean hữu ích để duy trì thư mục làm việc gọn gàng, bổ trợ cho các lệnh Git khác như git reset và git checkout, vốn quản lý thay đổi ở các tệp đã theo dõi.

Tôi thấy Complete Git Cheat Sheet là tài liệu tham khảo tiện lợi cho các lệnh Git thường dùng.

Các cách dùng phổ biến của git clean

Lệnh git clean là công cụ hữu ích để giữ thư mục làm việc sạch sẽ. Dưới đây là một số trường hợp sử dụng phổ biến, nơi git clean có thể xóa an toàn các tệp và thư mục không cần thiết.

Xóa các tệp chưa được theo dõi

Khi làm việc trong kho Git, các tệp chưa được theo dõi có thể tích tụ theo thời gian. Các tùy chọn sau giúp xóa chúng:

  • git clean -f: Buộc xóa các tệp chưa được theo dõi.

  • git clean -fd: Xóa các tệp và thư mục chưa được theo dõi.

  • git clean -fx: Xóa cả tệp chưa được theo dõi và tệp bị bỏ qua như trong .gitignore.

Tuy nhiên, hãy cẩn thận khi dùng tùy chọn -fx vì nó cũng xóa các tệp bị bỏ qua. Luôn xác minh trước bằng chế độ chạy thử (git clean -n) trước khi thực thi lệnh.

Chế độ tương tác

Lệnh git clean -i bật chế độ tương tác, cho phép bạn chọn lọc xóa các tệp chưa được theo dõi. Chế độ này hữu ích khi bạn muốn kiểm soát nhiều hơn tệp hoặc thư mục nào sẽ bị xóa.

Giả sử bạn đang làm một dự án mà bạn đã lưu các thay đổi trong thư mục Olympics. Tuy nhiên, bạn đã thêm nguồn dữ liệu mới tên là 2024_Data và 2025_Data. Nếu chạy lệnh git clean -i, bạn sẽ nhận được lời nhắc cho phép chọn trong các tùy chọn sau để xóa các thay đổi chưa được theo dõi.

  • clean:  Xóa các tệp đã chọn

  • filter: Chỉ định mẫu cho các tệp cần xóa

  • select: Chọn từng tệp theo số

  • quit: Thoát mà không xóa gì

git clean -i interactive mode.

Chế độ tương tác git clean -i. Ảnh: Tác giả.

Chạy thử để an toàn

Sử dụng tùy chọn git clean -n là một biện pháp an toàn hữu ích vì nó thực hiện “chạy thử”, hiển thị danh sách các tệp và thư mục chưa được theo dõi sẽ bị xóa mà không thực sự xóa chúng. Điều này cho phép bạn xem lại thay đổi trước khi thực thi.

Trong ví dụ dưới đây, lệnh git clean -n liệt kê các tệp sẽ bị xóa nhưng không xóa chúng.

git clean -n for dry run.

git clean -n để chạy thử. Ảnh: Tác giả.

Kết hợp với git reset

Để đặt lại hoàn toàn thư mục làm việc của Git, bạn có thể kết hợp git reset và git clean trong đó:

  • git reset --hard: Đặt lại các tệp đã theo dõi về trạng thái commit gần nhất, loại bỏ mọi thay đổi cục bộ.

  • git clean -fd: Xóa các tệp và thư mục chưa được theo dõi, chỉ để lại các tệp đã commit.

Kết hợp này đảm bảo thư mục làm việc hoàn toàn sạch, hữu ích khi chuyển nhánh, hoàn tác thay đổi thử nghiệm hoặc chuẩn bị cho một khởi đầu mới.

Xem hướng dẫn Git Pull Force: How to Overwrite a Local Branch With Remote để học thực tiễn tốt nhất khi ghi đè thay đổi cục bộ.

Hướng dẫn từng bước sử dụng git clean

Làm theo các bước sau để dọn sạch kho Git của bạn và xóa các tệp, thư mục chưa được theo dõi không mong muốn một cách an toàn.

Bước 1: Kiểm tra trạng thái hiện tại

Trước khi dọn dẹp, chạy git status để kiểm tra trạng thái hiện tại của kho và xem tệp nào chưa được theo dõi.

git status

git status to check the current state of the repository.

git status để kiểm tra trạng thái hiện tại của kho. Ảnh: Tác giả.

Bước 2: Xem trước những gì sẽ bị xóa

Trước khi chạy bất kỳ lệnh xóa nào, dùng git clean -n để xem trước những gì sẽ bị xóa.

git clean -n

git clean -n to preview what to delete.

git clean -n để xem trước những gì sẽ xóa. Ảnh: Tác giả.

Bước 3: Xóa các tệp chưa được theo dõi

Chạy git clean -f để xóa các tệp chưa được theo dõi nếu phần xem trước là chính xác.

git clean -f

Remove untracked changes using git clean -f.

Xóa thay đổi chưa được theo dõi bằng git clean -f. Ảnh: Tác giả.

Bước 4: Xóa thư mục chưa được theo dõi

Dùng git clean -fd để xóa các thư mục chưa được theo dõi.

git clean -fd

Remove untracked directories using git clean -fd.

Xóa thư mục chưa được theo dõi bằng git clean -fd. Ảnh: Tác giả.

Bước 5: Xóa các tệp bị bỏ qua

Để xóa cả tệp chưa được theo dõi và tệp bị bỏ qua, dùng lệnh git clean -fx.

git clean -fx

Bước 6: Dùng chế độ tương tác để dọn có chọn lọc

Để kiểm soát tốt hơn, hãy cân nhắc dùng git clean -i để xóa tương tác. Chế độ này cho phép bạn chọn từng tệp cần xóa.

Git clean -i

git clean -i interactive mode for selective cleaning.

Chế độ tương tác git clean -i để dọn có chọn lọc. Ảnh: Tác giả.

git clean so với các lệnh Git khác

Lệnh git clean thường được so sánh với các lệnh Git khác có tác động chỉnh sửa hoặc đặt lại tệp. Bảng dưới đây nêu bật những khác biệt chính:

LệnhChức năng
git cleanXóa vĩnh viễn các tệp và thư mục chưa được theo dõi.
git resetĐặt lại các tệp đã theo dõi về trạng thái trước đó, ảnh hưởng đến thay đổi đã stage và đã commit.
git checkout (hoặc git restore)Loại bỏ thay đổi ở các tệp đã theo dõi nhưng không xóa chúng.
git stashLưu tạm thời cả thay đổi đã theo dõi và chưa được theo dõi để dùng sau.

Thực tiễn tốt nhất với Git Clean

Để dùng git clean an toàn và hiệu quả, hãy làm theo các thực tiễn tốt nhất sau:

  • Luôn chạy thử (-n) trước khi xóa: Luôn dùng tùy chọn git clean -n để chạy thử trước khi thực thi git clean. Điều này cho phép bạn xem trước tệp nào sẽ bị xóa mà không thực sự xóa chúng.

  • Lưu ý các tệp bị bỏ qua: Khi dùng git clean, hãy thận trọng với tùy chọn -x, vốn xóa các tệp bị bỏ qua. Điều này có thể xóa các tệp cấu hình quan trọng được liệt kê trong .gitignore. Nếu cần xóa các tệp bị bỏ qua, hãy dùng lệnh git clean -fx.

  • Kết hợp với Git Reset để dọn sạch hoàn toàn: Để đặt lại kho hoàn toàn, kết hợp git reset với git clean, trong đó git reset --hard khôi phục các tệp đã theo dõi về trạng thái commit gần nhất và git clean -fd xóa các tệp, thư mục chưa được theo dõi.

  • Dùng chế độ tương tác (-i) để xóa an toàn hơn: Thay vì xóa một cách mù quáng, hãy dùng chế độ tương tác (git clean -i) để xem xét và chọn các tệp cần xóa.

Rủi ro tiềm ẩn và lưu ý

Dùng git clean có thể rủi ro nếu không cẩn thận, vì nó xóa vĩnh viễn các tệp mà không lưu trữ ở đâu. Dưới đây là một số rủi ro và lưu ý quan trọng:

  • Tệp bị xóa vĩnh viễn: Khác với git stash, vốn lưu tạm thay đổi, git clean xóa vĩnh viễn các tệp và thư mục chưa được theo dõi. Sau khi xóa, không thể khôi phục các tệp này qua Git. Nếu có thể cần dùng lại sau, hãy stash hoặc sao lưu trước khi chạy git clean.

  • Cẩn trọng với tùy chọn -x: Dùng git clean-fx sẽ xóa các tệp bị bỏ qua, có thể bao gồm tệp cấu hình quan trọng trong .gitignore hoặc cache phụ thuộc như node_modules/ và venv/. Vô tình xóa chúng có thể làm hỏng build hoặc môi trường phát triển, vì vậy chỉ dùng khi thật cần thiết.

  • Luôn chạy thử trước: Luôn chạy thử bằng git clean -n trước khi thực thi git clean -f. Bước này cho phép bạn xem trước tệp nào sẽ bị xóa, giúp tránh xóa nhầm tệp quan trọng

  • Cách tiếp cận thay thế: Trong một số tình huống, dùng git stash có thể tốt hơn git clean. Lệnh git stash -u stash các tệp chưa được theo dõi, ngoại trừ tệp bị bỏ qua, để có thể khôi phục sau; và git stash pop khôi phục các thay đổi đã stash khi cần. Cách này hữu ích khi bạn cần chuyển nhánh hoặc dọn không gian làm việc mà không mất vĩnh viễn các thay đổi.

Kết luận

Một codebase được duy trì tốt thể hiện sự chú ý đến chi tiết, hiệu quả và khả năng quản lý tài sản số một cách có trách nhiệm. Nhà tuyển dụng tìm kiếm những lập trình viên hiểu các thực tiễn tốt như dùng git clean -n trước khi xóa tệp, thận trọng với các tệp bị bỏ qua qua tùy chọn -x, và tận dụng các lựa chọn an toàn hơn như git stash.

Học các khóa của DataCamp không chỉ là cách tuyệt vời để học mà còn là tín hiệu với nhà tuyển dụng rằng bạn nghiêm túc với phát triển phần mềm. Vì vậy, tôi khuyến nghị bạn đọc bài Top 20 Câu hỏi và Trả lời phỏng vấn Git cho mọi cấp độ và tham gia lộ trình kỹ năng mới Git Fundamentals để trở thành chuyên gia về Git.

Allan Ouko

Tác giả

Allan Ouko

Biên tập viên kỹ thuật về Khoa học dữ liệu với kinh nghiệm thực tế trong phân tích dữ liệu, trí tuệ doanh nghiệp và khoa học dữ liệu. Tôi viết nội dung thực tiễn, tập trung vào ngành về SQL, Python, Power BI, Databricks và kỹ thuật dữ liệu, dựa trên công việc phân tích trong thế giới thực. Bài viết của tôi kết nối chiều sâu kỹ thuật với tác động kinh doanh, giúp các chuyên gia chuyển đổi dữ liệu thành những quyết định vững chắc.

Câu hỏi thường gặp về Git Clean

git clean dùng để làm gì?

git clean xóa các tệp và thư mục chưa được theo dõi khỏi thư mục làm việc Git của bạn.

git clean có xóa các tệp đã commit không?

Không, git clean chỉ xóa các tệp chưa được theo dõi và không ảnh hưởng đến các tệp đã commit hoặc đã stage.

Làm sao xem trước các tệp trước khi xóa?

Dùng git clean -n để chạy thử và xem những tệp nào sẽ bị xóa.

Sự khác nhau giữa git clean -f và git clean -fd là gì?

git clean -f xóa các tệp chưa được theo dõi, còn git clean -fd cũng xóa cả các thư mục chưa được theo dõi.

git clean khác gì với git reset?

git clean xóa các tệp chưa được theo dõi, còn git reset khôi phục các tệp đã theo dõi về trạng thái trước đó.

Có cách nào xóa chọn lọc các tệp không?

Có, hãy dùng git clean -i để vào chế độ tương tác, cho phép bạn chọn tệp để xóa.

Chủ đề

Liên quan