2009-10-26 33 views
9

Tôi muốn biết nếu nó có thể khôi phục lại một tập tin khỏi một phiên bản cũ hơn (một cách sạch để làm điều đó)bzr: Khôi phục file bị xóa sau khi một số cam kết với chợ

tôi đã đổi tên một tập tin cho một số bài kiểm tra, hơn tôi cam kết tất cả công việc của mình (và tôi quên đổi tên tệp) và đã thực hiện nhiều cam kết khác ... Khi tôi nhận ra, đã quá muộn ...

Trân trọng, Ayman

Trả lời

0

Đây không phải là câu trả lời hay nhất. Xem câu trả lời của bialix, đơn giản hơn rất nhiều. Tôi sẽ để đây ở đây để tham khảo.


Dưới đây là những gì tôi nghĩ là phương pháp sạch:

  1. Tạo một chi nhánh:

    bzr chi nhánh mytree sửa chữa-path

  2. cd vào chi nhánh sửa chữa

  3. Chỉ hoàn nguyên tệp bị thiếu trong lần sửa đổi cuối cùng (e g 287 trong ví dụ này):

    bzr trở -r 287 lost.file

  4. Commit sự thay đổi

    bzr commit -m "Unshoot chân của tôi"

  5. cd trở lại vào chính chi nhánh

  6. hợp nhất trong việc sửa chữa

    bzr merge sửa chữa-path

  7. Khi sẵn sàng, hãy cam kết hợp nhất và xóa chi nhánh sửa chữa.

Bạn có thể thực hiện việc này chỉ bằng cách hoàn nguyên trong nhánh hoạt động ban đầu, nhưng thực tế là không tốt. Bạn cũng cần phải lo lắng (chỉ một chút) về bất kỳ thay đổi không được cam kết nào.

4

Nếu bạn biết số sửa đổi khi bạn xóa tệp đó (bạn có thể kiểm tra lịch sử với bzr log -v) thì bạn có thể hồi sinh tệp đó bằng lệnh hợp nhất. Vì vậy, cho file foo và revision number N bạn cần phải chạy lệnh:

bzr merge foo -r N..N-1 

Ví dụ: cho bản sửa đổi 287:

bzr merge foo -r 287..286 

Lệnh này sẽ khôi phục tệp của bạn như sửa đổi 287. Bạn cần thực hiện thay đổi này và thực hiện.

+0

Cẩn thận! Điều này sẽ hoàn tác * toàn bộ * của rev 287. Tôi không nghĩ rằng bạn có thể hợp nhất chỉ một tệp cụ thể từ một changeset. –

+0

Có, bzr chỉ có thể hợp nhất một tệp từ changeset. Bạn có thể tự mình kiểm tra. – bialix

+0

Vâng, bạn hoàn toàn đúng. +1. Tôi rút lại bình luận và câu trả lời của mình. Điều duy nhất tôi vẫn duy trì là, tùy thuộc vào sự phức tạp của công việc của bạn, nó có thể là hợp lý để trở lại trong một chi nhánh khác. –

12

Cách đơn giản nhất là chỉ cần sử dụng bzr revert với một số sửa đổi trước khi các tập tin đã bị xóa:

bzr revert -rX path/to/file 
bzr commit -m 'Bringing path/to/file back' 

Bạn không cần phải sáp nhập bất cứ điều gì.

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