2011-09-29 35 views
21

Tôi cố gắng xóa các tệp không cần thiết khỏi kho lưu trữ git. Các tệp đó ban đầu được thêm vào và bây giờ chúng nằm trong một số nhánh. Những gì tôi muốn chỉ đơn giản là ngừng theo dõi những thay đổi trong các tập tin đó, tôi không quan tâm những thay đổi nên ở lại đó, nhưng tôi cần các tập tin đó để ở lại trên hệ thống tập tin.git xóa tệp khỏi kho lưu trữ nhưng để tệp đó trên hệ thống tệp

tôi đã cố gắng sau

git filter-branch --index-filter "git rm --cached --ignore-unmatch file_to_remove" HEAD 

nhưng đó tập tin bị loại bỏ khỏi hệ thống tập tin những gì là không mong muốn.

+1

Tôi thường sao chép các tập tin ở đâu đó trước khi chạy lệnh đó. Sau khi git xóa chúng, tôi thêm chúng vào .gitignore và sau đó di chuyển các bản sao trở lại. –

+0

Hmm, hack đẹp. Tôi đã không nghĩ về nó –

+1

@misha Bạn có muốn ngừng theo dõi chúng, hoặc hoàn toàn loại bỏ chúng khỏi kho lưu trữ? Bạn nói một điều trong câu hỏi của bạn và một điều khác trong một bình luận. – Andy

Trả lời

27

Chỉ:

git rm --cached file [file ...] 

Tất nhiên bạn sẽ cần phải chắc chắn rằng các tập tin vi phạm được thêm vào .gitignore của bạn để họ không bị recommitted ngay lập tức

+1

Tôi muốn loại bỏ chúng hoàn toàn từ kho lưu trữ từ tất cả các chi nhánh. Khi tôi làm như bạn nói, tập tin bị ngừng được theo dõi, nhưng tôi không thể chuyển nhánh, git nói 'Yêu cầu hợp nhất mức tệp tin. Ở trên chi nhánh '. –

2

Nếu bạn muốn giữ lại các tập tin trong kho lưu trữ, bạn có thể sử dụng:
git update-index --assume-unchanged <fileName>

Điều này giữ phiên bản hiện tại của tệp trong chỉ mục nhưng bạn có thể thay đổi tất cả những gì bạn muốn và git sẽ bỏ qua những nges.

+0

Tôi nhận thấy rằng cách tiếp cận của anh ấy chỉ tốt như một cách giải quyết ** tạm thời **. Bạn sẽ bị ngăn không cho kiểm tra một nhánh khác trong đó nội dung của tệp khác với nội dung của nhánh hiện tại. –

0

Thanh toán và chạy git clean cho mỗi chi nhánh.

git-sạch - Gỡ bỏ các file untracked từ cây làm việc

Dọn dẹp cây làm việc bằng cách đệ quy loại bỏ các file mà không phải là dưới sự kiểm soát phiên bản, bắt đầu từ thư mục hiện hành.

https://git-scm.com/docs/git-clean

Các vấn đề liên quan