Git: Làm thế nào để xóa tất cả các tập tin không bị theo dõi?


40

Tôi đang sử dụng Git để kiểm soát phiên bản. Bây giờ tôi muốn xóa trên máy cục bộ của mình tất cả các tệp trong kho lưu trữ không được theo dõi.

tôi có thể sử dụng

git status

để liệt kê các tệp này, nhưng làm cách nào tôi có thể xóa tất cả chúng?


1
Bạn có thể kiểm tra tất cả các tập tin đến một nơi khác trên máy của bạn và sau đó xóa phiên bản cũ không?
Nifle

1
Để chắc chắn tôi có thể, nhưng không có cách nào đơn giản hơn?
RoflcoptrException

Câu trả lời:


55

Nếu bạn có nó trong bỏ qua, sử dụng git clean -xf. Bạn có thể làm git clean -dfnhưng điều đó cũng sẽ loại bỏ các thư mục không được theo dõi. Sử dụng -ncho chạy khô.

Xem dọn dẹp không theo dõi


3
-x bỏ qua việc bỏ qua ..
UpAndAdam

8
-xfsẽ xóa các tập tin bị bỏ qua và đây có lẽ KHÔNG phải là những gì bạn muốn. Sử dụng -nfvà tiến hành cẩn thận. Xem: stackoverflow.com/questions/61212/
Mạnh

2
Hãy nhớ rằng, điều này có thể xóa các thư mục môi trường / IDE của bạn (ví dụ: .vagrant hoặc .idea (phpstorm))
timhc22

1
XEM RA! tập tin gitignored sẽ bị thanh trừng mãi mãi. -100
sepehr

5
git sạch -f

8
Có thể có ý nghĩa khi thêm ý nghĩa của lệnh đó để làm cho câu trả lời này được khép kín.
NN

5

Phương pháp tương tác người dùng:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i cho tương tác
-f cho tệp
-d cho thư mục

Lưu ý: Thêm -n hoặc --dry-run để chỉ kiểm tra những gì nó sẽ làm.


3

Có một sự tinh tế đáng được đề cập về git clean -fcác tập tin và thư mục không bị theo dõi. Nếu bạn có một thư mục chưa được theo dõi có chứa các tệp, một fortiori, không bị theo dõi, thì git clean -fsẽ KHÔNG xóa các tệp không bị theo dõi đó.

Nói cách khác, KHÔNG phải lúc nào cũng git clean -fsẽ xóa tất cả các tệp không bị theo dõi. Một lời giải thích tốt hơn git clean -flà nó xóa tất cả các tệp không được theo dõi mà không nằm trong các thư mục chưa được theo dõi.

git clean -f -d phải được sử dụng để xóa các tệp không bị theo dõi trong các thư mục chưa được theo dõi và dường như không có cách nào để xóa tất cả các tệp không bị theo dõi mà không xóa các thư mục không bị theo dõi chỉ chứa các tệp không bị theo dõi.

Sử dụng git clean -f -d -nđể THỰC SỰ thấy những gì bạn muốn làm để khôi phục thư mục làm việc của bạn về những gì nó sẽ không có bất kỳ tập tin chưa được theo dõi. Sau đó sử dụng git clean -f -dđể làm điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.