2011-11-01 31 views
5

Thật không may, chúng tôi vô tình kiểm tra trong một tệp nhị phân lớn một số thời gian trước đây và cho đến hôm nay không ai nhận thấy. Bây giờ tôi muốn bỏ cam kết đó và có lịch sử còn lại. Tôi biết về sự cẩn trọng của việc thay đổi lịch sử đẩy nhưng trong trường hợp này tôi không thể tránh được nó.Thả cam kết cũ: `git rebase` gây xung đột hợp nhất

Tôi đã cố gắng đạt được điều đó trong ~ 1h nhưng không đạt được. Lệnh tốt nhất tôi tìm thấy là

git rebase --interactive --preserve-merges $(EVIL_COMMIT)^ 

và trong trình chỉnh sửa nhận xét cam kết thứ nhất là cam kết thứ nhất.

Thật không may git rebase dừng lại khi hợp nhất và nhắc để giải quyết thủ công các xung đột hợp nhất. Tội ác chỉ thêm một số tệp mẫu mà phần mềm của chúng tôi sẽ tính toán cho mục đích thử nghiệm. Vì vậy, họ không nên có bất kỳ xung đột với các tập tin ví dụ chỉ thiếu.

  1. Tôi không hiểu nơi bắt đầu xung đột hợp nhất. Ai đó có thể giải thích?
  2. Cách giải quyết điều đó?

Tôi đã dành khá nhiều thời gian vào tìm kiếm của Google và SO. Một số chủ đề bao gồm một chủ đề tương tự nhưng syntax used is not available trong phiên bản Git ngày nay nữa hoặc nó không làm việc cho tôi (tôi chỉ mô tả một phương pháp ở trên vì đó là cách tiếp cận dễ nhất).

+0

thể trùng lặp của [Làm thế nào để xóa/xóa một tập tin lớn từ cam lịch sử trong kho Git?] (http://stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-commit-history-in-git-repository) –

Trả lời

6

Tôi muốn đi với filter-branch:

git filter-branch --prune-empty --index-filter ' 
    git rm --cached --ignore-unmatch path/to/file 
' --all 
+0

Điều này chỉ loại bỏ tệp 'path/to/file' từ tất cả các bản sửa đổi, phải không? Theo như tôi hiểu nó không loại bỏ các cam kết đó sẽ được để trống sau khi xóa các tập tin nhị phân (có thực sự 4 người trong số họ). –

+2

thêm '--prune-empty' vào lệnh chi nhánh bộ lọc. –

+1

Tôi nghĩ bạn có nghĩa là 'HEAD' chứ không phải' $ (EVIL_COMMIT)^'trong câu trả lời này - nếu không nó sẽ chỉ lọc các cam kết đến cái trước khi một tệp giới thiệu tệp lớn. –

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