2009-12-13 26 views
41

tôi chỉ làm một svn merge để nhập các thay đổi từ thân cây đến một chi nhánh:svn: Làm cách nào để hoàn tác hợp nhất (không có cam kết)?

$ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk . 
--- Merging r388 through r500 into '.': 
A foo 
A bar 
    C baz1 
    C baz2 
U duh 
[...] 

Nhưng có quá nhiều mâu thuẫn, vì vậy tôi muốn hoàn tác đó.

Một cách để thực hiện điều đó là cam kết và sau đó hợp nhất lại. Nhưng tôi không thể cam kết vì những xung đột. Cách tốt nhất để hoàn tác trong trường hợp đó là gì?

Trả lời

7

Miễn là bạn chưa cam kết, bạn luôn có thể hoàn nguyên để hoàn tác tất cả các thay đổi của mình.

+0

Hmm, chỉ 'svn Revert .' đã không làm bất cứ điều gì. – Frank

+0

OK, sau đó bạn nên giải quyết mọi thứ trước, sau đó thực hiện hoàn nguyên. – tangens

+6

... và như @rq đã nói, đừng quên cờ -R để hoàn nguyên đệ quy. – tangens

96

Revert đệ quy từ phía trên cùng của bản sao làm việc của bạn:

svn revert -R .

Bạn sẽ cần phải tự xóa các tập tin đã được thêm vào. Như trong sau khi hoàn nguyên, các tập tin được thêm vào sẽ vẫn còn trên đĩa nhưng họ sẽ ở trong tình trạng không được theo dõi ("foo?")

+2

Lệnh này cũng sẽ hoàn nguyên bất kỳ sửa đổi cục bộ nào đã tồn tại trước khi bạn thực hiện hợp nhất mặc dù chính xác? – NeilMonday

+4

@NeilMonday đúng, nhưng sau đó bạn không nên hợp nhất vào bản sao làm việc với các thay đổi cục bộ, không hợp nhất. – richq

-11

Chỉ cần làm svn resolve trên tất cả các cuộc xung đột nào và cam kết:

$ svn resolved baz1 
$ svn resolved baz2 
$ svn ci -m "oops. bad merge. will revert." 
Transmitting file data ...... 
Committed revision 501. 

Sau đó, , chính thức hoàn tác nó bằng cách hợp nhất trở lại vị trí của nó:

$ svn merge -r501:500 
--- Reverse-merging r319 into '.': 
[...] 

Vậy là, hợp nhất đã được hoàn tác trong thư mục. Bây giờ, hãy cam kết quá:

$ svn ci -m "bad merge has been undone" 
Transmitting file data ...... 
Committed revision 502. 

Phương pháp đã thêm được xóa hoàn toàn.

+0

Hãy tự mình tìm ra điều này, vì vậy tôi trả lời câu hỏi onw của tôi. :) – Frank

+13

Điều này hoàn toàn * không * theo cách bạn nên làm! – richq

+3

Bạn không thực sự muốn trở thành dấu hiệu xung đột puking vào lịch sử * vĩnh viễn * của kho lưu trữ, phải không !? Kinh quá. – bendin

2

Tôi cũng gặp phải tình huống tương tự, tôi cũng có một số thay đổi khác mà tôi không muốn mất. Vì vậy, thay vì toàn Revert đệ quy chỉ svn revert cho các mục mâu thuẫn là tốt cho tôi

svn revert baz1 baz2 
Các vấn đề liên quan