Tôi nhận thấy gần đây rằng các tệp dự án mà các trình soạn thảo văn bản của tôi sử dụng (cùng với một số thư rác khác) đã thêm kho git cho dự án. Vì chúng không thực sự là một phần của dự án, tôi muốn loại bỏ chúng, nhưng git rm
không loại bỏ các phiên bản cũ khỏi kho lưu trữ, và tôi không thể tìm thấy bất kỳ thứ gì khác có vẻ đầy hứa hẹn.Làm cách nào để xóa hoàn toàn tệp khỏi kho lưu trữ git?
Trả lời
Công cụ bạn muốn là git filter-branch
. sử dụng của nó được mô tả here, nhưng về cơ bản:
$ git filter-branch --tree-filter 'rm -f my_file' HEAD
sẽ loại bỏ "my_file" từ mỗi cam kết. Chú ý rằng điều này ghi đè mọi cam kết, vì vậy nếu bạn đẩy vào một kho lưu trữ từ xa, bạn phải (a) bắt buộc cập nhật, và (b) tất cả những người khác đã kéo từ bạn sẽ có các cam kết trùng lặp (kể từ khi bạn viết lại lịch sử), như được mô tả trên git rebase
man page.
Tôi khuyên bạn nên thêm '--prune-empty' để bất kỳ commit trống nào được tạo ra do đó sẽ bị xóa quá. – fnkr
Cách này hoạt động trên một kho lưu trữ có nhiều tệp có cùng tên trong các thư mục khác nhau? Nó có xóa tất cả các tệp có cùng tên không? – CodeMonkey
@CodeMonkey: Trong trường hợp đó, bạn sẽ sử dụng đường dẫn dài hơn, độc đáo. – mipadi
Đây là những gì git filter-branch
dành cho, nhưng hãy cẩn thận rằng lịch sử repo của bạn sẽ thay đổi và băm cam kết sẽ khác sau khi ghi lại lịch sử.
Nếu bạn muốn giải phóng dung lượng, tôi khuyên bạn nên sử dụng git forget-blob
, vì chỉ git filter-branch
sẽ không khiến cho tệp của bạn bị quên, vì nó vẫn có thể được tham chiếu bằng điều khiển từ xa, reflog, thẻ và như vậy.
git forget-blob main.c.swp
Bạn có thể tìm thêm thông tin here
- 1. Xóa hoàn toàn tệp khỏi toàn bộ kho git
- 2. Xóa một changeset cụ thể khỏi kho lưu trữ Git hoàn toàn?
- 3. Có thể xóa hoàn toàn tệp khỏi kho lưu trữ SVN của tôi không?
- 4. Git, xóa kho lưu trữ
- 5. Làm cách nào để thay thế hoàn toàn kho lưu trữ bitbucket bằng một kho lưu trữ khác?
- 6. Xóa git hỏng blob khỏi kho lưu trữ
- 7. git xóa tệp khỏi kho lưu trữ nhưng để tệp đó trên hệ thống tệp
- 8. Tôi làm cách nào để xóa tệp khỏi kho lưu trữ thư mục đích?
- 9. Làm thế nào để loại bỏ kho git khỏi Trình duyệt Kho lưu trữ trên Netbeans?
- 10. Xóa kho lưu trữ git trên Bitbucket?
- 11. Cách xóa tất cả các tệp đã xóa khỏi kho lưu trữ?
- 12. Cách xóa nguồn gốc khỏi kho git
- 13. cách xóa tệp trong kho lưu trữ từ xa?
- 14. Tôi có thể xóa cam kết ban đầu khỏi kho lưu trữ Git không?
- 15. Làm cách nào để lấy dữ liệu tệp nhị phân ra khỏi kho lưu trữ Git bằng LibGit2Sharp?
- 16. git kho lưu trữ nhân bản kho
- 17. Cách xóa hoàn toàn các tệp .svn trong Git
- 18. Làm thế nào để bước qua kho lưu trữ git?
- 19. Làm cách nào để sao chép thư mục từ kho lưu trữ git này sang kho lưu trữ git khác, lưu giữ lịch sử?
- 20. Tạo kho lưu trữ git chứa một kho git khác
- 21. Cách chia sẻ tệp trên các kho lưu trữ git?
- 22. Biểu tượng kho lưu trữ Git
- 23. Git - xóa một số tệp cục bộ, làm cách nào để tải chúng từ kho lưu trữ từ xa
- 24. Làm cách nào để "Kiểm duyệt" lịch sử của kho lưu trữ git?
- 25. Cách xóa tất cả các tệp trong kho lưu trữ Git không nằm trong thư mục làm việc?
- 26. cách thay thế hoàn toàn mã trong kho git
- 27. Xóa các tệp đã xóa khỏi lịch sử git
- 28. Git: Làm cách nào để có được ảnh chụp nhanh của kho lưu trữ git
- 29. Làm cách nào để chuyển thư mục vào kho lưu trữ git?
- 30. Git kho lưu trữ từ xa rõ ràng
phần trùng lặp, chắc chắn bao phủ bởi những câu hỏi trước: http://stackoverflow.com/questions/307828/git-remove-file-accidentally-added-to -the-repository http://stackoverflow.com/questions/1216733/remove-a-directory-permanently-from-git – Cascabel