2010-09-14 8 views
53

Tôi biết tôi nên làm việc trên một chi nhánh của riêng tôi nhưng một vài người trong chúng ta đang ở trên cùng một chi nhánh của một dự án. Một trong những Dev's đã thực hiện một cam kết và tôi chỉ muốn cập nhật bản sao cục bộ của tôi với bản mới nhất từ ​​SVN. Chạy 'cập nhật svn' Tôi nhận được kết quả này:Có thể luôn luôn (bắt buộc) ghi đè lên các thay đổi cục bộ khi cập nhật từ SVN không? Bỏ qua xung đột?

Restored 'index.html' 
U somescript.php 
Conflict discovered in file.xml'. 
Select: (p) postpone, (df) diff-full, (e) edit, 
     (mc) mine-conflict, (tc) theirs-conflict, 
     (s) show all options: 

Có một lựa chọn/cách ghi đè lên thay đổi địa phương của tôi và nhận được các tập tin mới nhất (s) từ lật đổ và bỏ qua tất cả những mâu thuẫn?

Tôi đã xem một số bài đăng khác trên Stack và tất cả đều không trả lời câu hỏi. Họ nói để xóa các dự án và kiểm tra một lần nữa, mà tôi đoán nếu đó là cách tốt nhất để được nó ... Nhưng muốn biết thêm chi tiết về lý do tại sao tôi không thể ép buộc một bản cập nhật. Cảm ơn

EDIT:

Vì vậy, tôi chọn s 'hiển thị tất cả các tùy chọn':

(s) hiển thị tất cả tùy chọn: s

(e) edit    - change merged file in an editor 
    (df) diff-full  - show all changes made to merged file 
    (r) resolved   - accept merged version of file 

    (dc) display-conflict - show all conflicts (ignoring merged version) 
    (mc) mine-conflict - accept my version for all conflicts (same) 
    (tc) theirs-conflict - accept their version for all conflicts (same) 

    (mf) mine-full  - accept my version of entire file (even non-conflicts) 
    (tf) theirs-full  - accept their version of entire file (same) 

    (p) postpone   - mark the conflict to be resolved later 
    (l) launch   - launch external tool to resolve conflict 
    (s) show all   - show this list 

Tôi đoán tôi nên đi với tùy chọn 'tc '?

+0

Tại sao bạn muốn để làm điều này? Làm một hợp nhất và bạn sẽ không mất những thay đổi của bạn. Nếu không, hãy thực hiện 'svn revert' và sau đó' svn up'. – halfdan

+0

vấn đề là tôi không cần thay đổi của mình và muốn tải phiên bản mới nhất cho tệp đó và ghi đè các thay đổi của tôi –

+0

Tại sao bạn không xóa tệp và nhận phiên bản gần đây chỉ bằng cách cập nhật? :) – Select0r

Trả lời

65

Nếu bạn thực sự muốn có một bản sao của HEAD (phiên bản mới nhất trong Repos), sau đó bạn nên

svn revert -R <path> // discard all your changes inside path (recursive) 
svn update   // get latest revision of all files (recursive) 

Vậy là xong.

Hãy coi chừng rằng bạn sẽ mất TẤT CẢ các thay đổi kể từ lần commit cuối cùng của bạn.

EDIT: thêm -R <path> từ Isu_guy answer vì lợi ích của sự hoàn chỉnh và giúp người đọc tìm một câu trả lời đầy đủ câu trả lời đơn

+0

Các tập tin không phiên bản sẽ không bị xóa. Xem thêm ở đây: [Có một lệnh Subversion để thiết lập lại bản sao làm việc?] (Http://stackoverflow.com/a/6204618/1996150) –

27

tato là hoàn toàn chính xác và xin vui lòng chú ý thận trọng của mình. Bạn sẽ mất TẤT CẢ những thay đổi của bạn. Chỉ cần làm rõ về cú pháp và một số sắc thái

hoàn nguyên svn không được đệ quy theo mặc định và cần có đường dẫn để làm việc. Để thực hiện là đệ quy thêm "-R". Nếu bạn đang ở trong hiện trạng sử dụng thư mục "./" cho 'con đường' bên dưới hoặc sử dụng một đường dẫn tuyệt đối như '/ path_to_your_folder'

svn revert -R <path> 

svn update là đệ quy. Nếu bạn đang ở trong thư mục bạn không cần một con đường ở tất cả

svn update 
22

Xin lỗi, tôi nhận ra đây là một bài khá cũ, nhưng thay vì hai cuộc phẫu thuật, tôi muốn làm điều này:

svn up --accept tf 

Điều đó nói rằng, "svn revert -R" sau đó "svn up" ở gốc của bản sao làm việc của bạn cũng sẽ làm các trick. Trong trường hợp của tôi, tôi có một vài WC cho các dự án khác nhau, vì vậy tôi chạy một kịch bản lệnh shell để cập nhật tất cả chúng khi tôi khởi động máy tính của mình. Tôi không sử dụng chấp nhận, thay vì tôi sử dụng "--accept p" để trì hoãn độ phân giải vì nó là một quá trình tự động, sau đó tôi hợp nhất bất kỳ xung đột nào mà SVN không thể tự động hợp nhất trên đó (thường, điều này liên quan đến việc hoàn nguyên, nhưng nó phụ thuộc).

+0

lệnh này không hoạt động, nó nói xấu các thông số. – arvindwill

+0

lạ - có thể là SVN client/version cụ thể. Tôi đang chạy phiên bản hiện tại của TortoiseSVN trên Win7, tuy nhiên lệnh này cũng hoạt động trên máy chủ SVN chúng tôi có trên máy chủ CentOS của chúng tôi quá. – Carnix

+0

Như Andrei đã đề cập dưới đây, svn up - chấp nhận của họ đầy đủ – Raghav

14

Sử dụng svn 1.6.11 (được vận chuyển bởi CentOS 6.4) lệnh Carnix của sẽ giống như

svn up --accept theirs-full 

(không thể thêm một bình luận vì tôi không có đủ uy tín)

2

Trả lời câu hỏi đầu tiên của bạn. Không. Nhưng bạn có thể ghi đè lên tập tin địa phương của bạn bằng cách chạy lệnh sau từ thư mục gốc của dự án của bạn:

svn revert -R . 
svn update 

này làm việc trên mac của tôi với svn 1.7.19 và ubuntu với svn 1.8.8