git: Xóa tất cả các tập tin theo dõi?


9

Tôi có một thư mục chứa git repo cũng như các tệp không liên quan khác mà tôi không muốn theo dõi (thư mục chính của tôi, xin lỗi nếu đây là thông lệ xấu - khuyến nghị thay thế cho phiên bản bash profile và tệp vim được chào đón!)

Tôi có thể dễ dàng xóa thư mục .git, nhưng điều đó để lại cho tôi tất cả các tệp được theo dõi trong thư mục của tôi. Làm cách nào để xóa tất cả các tệp được theo dõi để tôi có thể xóa hoàn toàn git repo và các tệp có liên quan của nó, "giải nén" hoặc "gỡ cài đặt" một cách hiệu quả?

Ngoài ra, sau khi xóa các tệp này, làm cách nào để xóa bất kỳ thư mục nào được sử dụng để chứa các tệp được theo dõi nhưng hiện đang trống?

Liên quan (câu hỏi ngược lại): Git: Cách xóa tất cả các tệp không bị theo dõi

Câu trả lời:


13

Đối với các tệp bạn có thể muốn thay đổi dòng lệnh của mình một chút thành dòng lệnh được đề xuất trên trang git-rm

git ls-files -z | xargs -0 rm -f

Điều này an toàn hơn nhiều với các đường dẫn tệp phức tạp hơn. Đối với các thư mục bạn có thể thử một chiến lược tương tự:

git ls-tree --name-only -d -r -z HEAD | sort -rz | xargs -0 rmdir 

Tuy nhiên, điều này phụ thuộc vào cách bạn muốn xử lý các thư mục chứa các tệp (thường được ghi nhận) mà không bị theo dõi. Dòng lệnh trên nên để lại các tệp này và thư mục của chúng.

Nhưng nó sẽ dễ dàng thay đổi điều này để xóa thư mục, bất kể nội dung.


cảm ơn vì phản hồi rất hữu ích Tôi cho rằng nếu tôi muốn xóa các tập tin của gitignore, tôi có thể sử dụng git-clean
Ilias Karim

bạn có thể. Nhưng những gì tôi đã nghĩ là bạn có thể muốn lưu giữ các thư mục có các tệp không được theo dõi trong đó. Nếu bạn không, bạn có thể mạnh dạn hơn trong việc xóa các thư mục (rm -rf). Lý do tại sao tôi nghĩ bạn sẽ không muốn làm điều này là vì bạn có thể xóa tất cả các tệp không có trong thư mục .git.
andygavin

1

Bạn có thể yêu cầu git cho một danh sách tất cả các tệp được theo dõi với git ls-files. Vì vậy, lệnh sau sẽ hoạt động tốt

git ls-files | xargs rm

Cảm ơn! Không tệ, sửa đổi git ls-files | xargs -r rmnó cũng xóa các mô đun con. Nhưng làm cách nào để xóa các thư mục trống đã sử dụng để chứa các tệp được theo dõi nhưng hiện đang trống? mà không chỉ đơn giản là xóa tất cả các thư mục trống trong thư mục làm việc? (Tôi đã thêm câu hỏi này vào câu hỏi ban đầu)
Ilias Karim

Ví dụ, sau khi chạy này vào thư mục chính của tôi, tôi đang trái với thư mục cấu hình vim trống: .vim/bundle, .vim/colors, và.vim/syntax
Ilias Karim
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.