2012-12-05 27 views
8

Tôi đã thực hiện một số thay đổi mã không đúng đối với máy chủ SVN của mình bằng cách sử dụng TortoiseSVN.Xóa các sửa đổi bằng TortoiseSVN

Bây giờ sửa đổi đầu là 155, nhưng tôi muốn xóa 2 sửa đổi cuối cùng để sửa đổi đầu là 153. Nói cách khác, tôi muốn "hoàn tác" hai lần commit cuối cùng của tôi.

Tôi làm cách nào để thực hiện việc này bằng TortoiseSVN? Có một tùy chọn tồn tại trong trình đơn TortoiseSVN hay tôi cần sử dụng dòng lệnh?

+0

tôi muốn nói "rebase tương tác", nhưng tôi không chắc chắn nếu đó là đúng ... –

+0

@KerrekSB: Nó hoàn toàn đúng ... cho git :-). – sleske

Trả lời

5

Nếu bạn mở SVN Log, bạn có thể sau đó nhấp chuột phải vào một phiên bản và sử dụng các tùy chọn Hoàn nguyên để sửa đổi này hoặc Hoàn nguyên thay đổi từ phiên bản này. Cả hai tùy chọn này sẽ cập nhật bản sao làm việc của bạn (sau đó bạn có thể cam kết).

Không có tùy chọn nào trong TortoiseSVN để xóa sửa đổi.

+0

Nếu bạn thực sự cần phải xóa (tôi không đề nghị nó trừ khi có tham nhũng chính), có một số thông tin [ở đây] (http://superuser.com/questions/95432/want-to-delete-revisions-từ -my-svn-repository). –

0

Từ dòng lệnh:

Hoàn nguyên thay đổi vào một tập tin:

svn merge -r <newBadRev>:<oldRevToMergeBackTo> <filename> 

Ví dụ:

svn merge -r 155:153 myfile.cpp 
0

Thật không may, với TortoiseSVN (hoặc bất kỳ khách hàng SVN khác) không có cách để thực sự xóa một bản sửa đổi, theo nghĩa là nó hoàn toàn biến mất khỏi lịch sử. Thay đổi lịch sử kho lưu trữ SVN rất khó và yêu cầu thao tác trên máy chủ - hãy xem câu hỏi này: Why isn't obliterate an essential feature of Subversion?

Tuy nhiên, bạn có thể "hoàn tác" một lần đăng ký bằng cách thực hiện một lần đăng ký mới để thay đổi lại. Điều này thường được thực hiện với một kỹ thuật được gọi là "đảo ngược hợp nhất". Xem ví dụ Retract accidental checkin

1

Là tại thư mục gốc của bạn bản sao làm việc được cập nhật, bạn nên sử dụng lệnh sau:

svn merge -rHEAD:153 . 

Điều đó sẽ 'hoàn tác' tất cả các thay đổi của bạn từ phiên bản 153 để sửa đổi của bạn 156 sẽ trông giống như phiên bản 153

Đừng quên cam kết sau đó!

Bạn có thể làm điều tương tự từ TortoiseSVN: Mở 'Hiện Log' giao diện, chọn phiên bản 153, kích chuột phải vào nó và chọn 'Hoàn nguyên thay đổi từ phiên bản này'.

0

Tôi đã sử dụng các hướng dẫn này được lấy từ Tortoise website.

Nhưng điều quan trọng là phải nhấp vào COMMIT ngay sau. Tôi đã phát điên lên cho đến khi tôi nhận ra điều đó.

Nếu bạn cần phải thực hiện một phiên bản cũ hơn phiên bản đầu của bạn làm như sau:

  1. Chọn tập tin hoặc thư mục mà bạn cần để phục hồi các thay đổi. Nếu bạn muốn hoàn nguyên tất cả thay đổi, đây phải là thư mục cấp cao nhất.

  2. Chọn TortoiseSVN → Hiển thị Nhật ký để hiển thị danh sách các bản chỉnh sửa. Bạn có thể cần phải sử dụng Hiện tất cả hoặc 100 tiếp theo để hiển thị (các) bản sửa đổi mà bạn quan tâm.

  3. Nhấp chuột phải vào bản sửa đổi đã chọn, sau đó chọn Trình đơn ngữ cảnh → Hoàn nguyên bản sửa đổi này. Thao tác này sẽ hủy tất cả các thay đổi sau khi sửa đổi được chọn.

  4. Thực hiện cam kết.

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