Hầu hết các câu trả lời trước đây đã được sử dụng hợp nhất ngược và đó thường là câu trả lời đúng. Tuy nhiên, có một tình huống (điều vừa xảy ra với tôi) không xảy ra.
Tôi đã vô tình thay đổi một tệp có kết thúc dòng Unix thành kết thúc dòng DOS khi thực hiện một thay đổi nhỏ và cam kết nó. Điều này có thể dễ dàng hoàn tác, bằng cách thay đổi các kết thúc dòng và cam kết lại, hoặc bằng cách hợp nhất ngược, nhưng nó có tác dụng làm cho svn blame
danh sách chỉnh sửa của tôi là nguồn của mỗi dòng của tệp. (Thật thú vị, TortoiseSVN trên Windows không bị ảnh hưởng bởi điều này; chỉ có dòng lệnhsvn blame
.)
Nếu bạn muốn duy trì lịch sử như đã báo cáo svn blame
, tôi nghĩ bạn cần làm như sau:
- Xóa tập tin và cam kết.
- Trong kho lưu trữ, sao chép bản sao tốt trước đó của tệp vào phần đầu và cam kết.
- Khôi phục mọi chỉnh sửa mà bạn muốn giữ.
Việc xóa là hơi đáng sợ, nhưng hãy nhớ rằng bạn luôn có tệp được lưu trong kho lưu trữ, vì vậy việc khôi phục nó không phải là vấn đề lớn. Đây là một số mã để minh họa các bước. Giả sử đó xxx
là số sửa đổi của bản sao tốt cuối cùng.
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
Lưu ý rằng đối với một bản sao trong kho lưu trữ, đích cần phải là một thư mục, không phải là tên tệp.