2012-02-11 14 views
16

Tôi đã được googling và đọc bài viết khác nhau trên mạng và tôi đã cố gắng:Làm thế nào để loại bỏ một tập tin vĩnh viễn trong Git mà không nhận được "Chú ý: Ref" refs/heads/master 'là không thay đổi "?

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch Launcher\lib" --prune-empty -- --all

git filter-branch --tree-filter "rm -rf Launcher\lib" --prune-empty -- --all

Tất cả các kết quả trong một: CẢNH BÁO

: Ref 'refs/heads/master' không thay đổi

Có các bản sao khác của kho lưu trữ này và máy chủ trung tâm. Tôi sẽ đẩy những thay đổi vào máy chủ, như tôi hiểu, những người khác với nhân bản chỉ cần lấy và rebase (không hợp nhất)? Nó sẽ vẫn hoạt động nếu họ đã thực hiện thay đổi?

+0

Có gì thay đổi sau chi nhánh bộ lọc không? – Andy

+0

Không, hệ thống tập tin giống nhau và tôi thấy các tập tin trong lịch sử. – Tower

+0

Có sự khác biệt nào giữa các phiên bản 'bộ lọc chỉ mục' và' bộ lọc cây 'của lệnh, ngoài tốc độ, về mặt lịch sử repo cuối cùng không? Ngoài ra, '--',' --all' và '--prune-empty' làm gì? –

Trả lời

21

Tôi đã giải quyết được vấn đề, đó là con đường sai. Tôi đã thay đổi này:

Launcher\lib

này:

Launcher/lib/

và bây giờ nó hoạt động;)

+1

+1 Cảm ơn ... Tôi sắp sửa phẫu thuật// –

+0

Tương tự, nếu bạn đã di chuyển tệp bằng 'git mv', các cam kết cũ vẫn tham chiếu đến vị trí cũ, vì vậy bạn nên' rm' , không phải là vị trí mới (hoặc chạy nó với cả hai). –

7

Tôi sẽ đặt ở đây như một tài liệu tham khảo trong tương lai kể từ khi tôi có cùng một vấn đề: Nếu bạn sử dụng cmder (hoặc khác ConEmu hương vị), hãy sử dụng dấu ngoặc kép thay vì dấu nháy đơn.

Cũng quấn đường dẫn trong dấu ngoặc kép nếu bạn có một số khoảng trắng trong địa chỉ của bạn:

git filter-branch --force --index-filter \ 
"git rm --cached --ignore-unmatch 'server/bin/some file.txt'" \ 
--prune-empty --tag-name-filter cat -- --all 

Đó là vấn đề khi tôi đã nhận lỗi đó.

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