Cập nhật mục để sửa đổi so với hoàn nguyên thành sửa đổi


161

Tôi đã bắt đầu sử dụng Subversion với TortoiseSVN. Nếu tôi mở nhật ký và nhấp chuột phải vào bản sửa đổi cũ, tôi sẽ thấy hai tùy chọn nghe giống như chúng quay lại phiên bản cũ hơn: "Cập nhật mục để sửa đổi" và "Hoàn nguyên bản sửa đổi này".

Tôi hiểu rằng việc cập nhật lên bản sửa đổi cũ hơn được sử dụng khi bạn chỉ muốn nhìn lại một phiên bản cũ nhưng không thực sự thay đổi kho lưu trữ. Hoàn nguyên là khi bạn thực sự gặp rắc rối và muốn phiên bản mới nhất trong kho lưu trữ giống với phiên bản cũ hơn.

Vì vậy, giả sử sửa đổi CHÍNH là 100 và tôi trở lại 95. Nó sẽ đảo ngược hợp nhất bản sao làm việc của tôi trở lại 95. Sau đó tôi có thể cam kết thay đổi đó với kho lưu trữ sẽ tạo ra sửa đổi 101 đúng không? Làm thế nào khác nhau nếu tôi cập nhật trở lại phiên bản 95? Không phải nó vẫn chỉ đảo ngược những thay đổi từ các phiên bản trước sao? Tôi bối rối về việc trạng thái của bản sao làm việc của tôi khác nhau như thế nào sau khi Hoàn nguyên hoặc Cập nhật lên bản sửa đổi cũ hơn.

Câu trả lời:


205

Cập nhật lên sửa đổi sẽ chỉ cập nhật các tệp của bản làm việc của bạn lên bản sửa đổi được chọn của bạn. Nhưng bạn không thể tiếp tục làm việc với bản sửa đổi này, vì SVN sẽ phàn nàn rằng bản làm việc của bạn đã hết hạn .

trở lại bản sửa đổi này sẽ hoàn tác tất cả các thay đổi trong bản sao làm việc của bạn được thực hiện sau khi sửa đổi đã chọn (trong ví dụ của bạn là 96,97,98,99,100) Bản sao làm việc của bạn hiện đang ở trạng thái sửa đổi .

Nội dung tệp của cả hai phối cảnh đều giống nhau, tuy nhiên trong trường hợp đầu tiên bạn có một bản sao làm việc chưa được sửa đổi và bạn không thể thực hiện các thay đổi của mình (vì bản sao của bạn không trỏ đến HEAD rev 100) trong trường hợp thứ hai bạn có một bản sao làm việc được sửa đổi chỉ vào đầu và bạn có thể tiếp tục làm việc và cam kết


1
OK để nói rằng tôi cập nhật để sửa đổi và bản sao làm việc của tôi đã hết dữ liệu. Không có gì ngăn cản tôi thay đổi các tập tin. Điều gì xảy ra nếu tôi thay đổi một trong các tệp và cố gắng cam kết nó. Tôi đoán lật đổ sẽ thấy xung đột và buộc tôi hợp nhất phiên bản mới nhất trong kho lưu trữ vào bản sao làm việc đã sửa đổi của tôi trước khi tôi gửi nó.
Eric Anastas

5
Nếu bạn cố gắng cam kết một mục với BASE-Revision cũ hơn TRƯỚC, bạn sẽ nhận được "cam kết thất bại: bản sao làm việc của bạn có thể bị lỗi thời"
Peter Parker

làm thế nào update torevert to/fromxử lý những thay đổi cục bộ (những thay đổi không được cam kết)?
BaltoStar

Cả hai phương pháp đều giữ nguyên các thay đổi cục bộ, tuy nhiên các thay đổi cục bộ có thể gây ra xung đột trong cả hai trường hợp và trong trường hợp hoàn nguyên, các sửa đổi từ cuộn ngược được trộn lẫn với tất cả các thay đổi cục bộ của người dùng khác. Vì vậy, ít nhất hãy lưu một bản vá các sửa đổi của bạn hoặc cam kết với một chi nhánh.
Peter Parker

31

Để hiểu trạng thái của bản sao làm việc của bạn khác nhau như thế nào trong cả hai trường hợp, bạn phải hiểu khái niệm về sửa đổi BASE :

CĂN CỨ

Số sửa đổi của một mục trong một bản sao làm việc. Nếu mục đã được sửa đổi cục bộ, điều này đề cập đến cách mục xuất hiện mà không cần sửa đổi cục bộ.

Bản sao làm việc của bạn chứa một ảnh chụp nhanh của mỗi tệp (được ẩn trong thư mục .svn) trong bản sửa đổi BASE này, nghĩa là khi nó được lấy lần cuối từ kho lưu trữ . Điều này giải thích tại sao các bản sao làm việc chiếm gấp đôi dung lượng và làm thế nào có thể bạn có thể kiểm tra và thậm chí hoàn nguyên các sửa đổi cục bộ mà không cần kết nối mạng.

Cập nhật mục để Sửa đổi thay đổi sửa đổi cơ sở này, làm cho BASE lỗi thời. Khi bạn cố gắng thực hiện các sửa đổi cục bộ, SVN sẽ nhận thấy rằng BASE của bạn không khớp với kho lưu trữ CHÍNH. Cam kết sẽ bị từ chối cho đến khi bạn thực hiện cập nhật (và có thể là hợp nhất) để sửa lỗi này.

Hoàn nguyên để sửa đổi không thay đổi BASE. Về mặt khái niệm, nó gần giống như chỉnh sửa tệp theo cách thủ công để phù hợp với phiên bản trước đó.


Từ câu trả lời được chấp nhận "Nội dung tệp của cả hai phối cảnh là như nhau". Vậy tại sao phải bận tâm? Câu trả lời này giải thích sự khác biệt cuối cùng và giải thích tại sao "cập nhật" so với "hoàn nguyên" gây ra hành vi khác nhau khi cố gắng cam kết.
radarbob

làm thế nào update torevert to/fromxử lý những thay đổi cục bộ (những thay đổi không được cam kết)?
BaltoStar

5

Các tệp trong bản sao làm việc của bạn có thể trông giống hệt nhau sau đó, nhưng chúng vẫn là những hành động rất khác nhau - kho lưu trữ ở trạng thái hoàn toàn khác và bạn sẽ có các tùy chọn khác nhau có sẵn cho bạn sau khi hoàn nguyên so với "cập nhật" sang sửa đổi cũ .

Tóm lại, "cập nhật thành" chỉ ảnh hưởng đến bản sao làm việc của bạn, nhưng "hợp nhất và cam kết ngược" sẽ ảnh hưởng đến kho lưu trữ.

Nếu bạn "cập nhật" lên bản sửa đổi cũ, thì kho lưu trữ đã không thay đổi: trong ví dụ của bạn, bản sửa đổi CHÍNH vẫn là 100. Bạn không phải cam kết bất cứ điều gì, vì bạn chỉ loay hoay với bản sao làm việc của mình. Nếu bạn sửa đổi bản sao làm việc của mình và cố gắng cam kết, bạn sẽ được thông báo rằng bản sao làm việc của bạn đã lỗi thời và bạn sẽ cần cập nhật trước khi có thể cam kết. Nếu ai đó làm việc trên cùng một kho lưu trữ thực hiện "cập nhật" hoặc nếu bạn xem bản sao làm việc thứ hai, nó sẽ là r100.

Tuy nhiên, nếu bạn "hợp nhất ngược" với bản sửa đổi cũ, thì bản sao làm việc của bạn vẫn dựa trên CHÍNH (giả sử bạn đã cập nhật) - nhưng bạn đang tạo một bản sửa đổi mới để thay thế các thay đổi không mong muốn. Bạn phải cam kết những thay đổi này, vì bạn đang thay đổi kho lưu trữ. Sau khi hoàn tất, mọi cập nhật hoặc bản sao làm việc mới dựa trên CHÍNH sẽ hiển thị r101, với nội dung bạn vừa cam kết.


5

Cập nhật bản sao làm việc của bạn để sửa đổi đã chọn. Hữu ích nếu bạn muốn bản sao làm việc của mình phản ánh một thời gian trong quá khứ hoặc nếu có thêm các cam kết với kho lưu trữ và bạn muốn cập nhật bản sao làm việc của mình từng bước một. Tốt nhất là cập nhật toàn bộ thư mục trong bản sao làm việc của bạn, không chỉ một tệp, nếu không bản sao làm việc của bạn có thể không nhất quán. Điều này được sử dụng để kiểm tra một mục đích rev cụ thể, nếu thử nghiệm của bạn đã hoàn thành, bạn có thể sử dụng lệnh này để kiểm tra một rev khác hoặc sử dụng SVN Update để lấy HEAD

Nếu bạn muốn hoàn tác một thay đổi trước đó vĩnh viễn, thay vào đó hãy sử dụng Hoàn nguyên bản sửa đổi này .

- từ tài liệu trợ giúp của TSVN

Nếu bạn Cập nhật bản sao làm việc của mình lên bản sửa đổi trước đó, điều này chỉ ảnh hưởng đến bản sao làm việc của chính bạn, sau khi bạn thực hiện một số thay đổi và muốn cam kết, bạn sẽ thất bại, TSVN sẽ cảnh báo bạn cập nhật WC của bạn lên bản sửa đổi mới nhất trước tiên nếu bạn Hoàn nguyên đến một rev, bạn có thể cam kết với repository.everyone sẽ quay lại rev sau khi họ cập nhật.


2

Văn bản từ tài liệu tham khảo Rùa:

Cập nhật mục để sửa đổi Cập nhật bản sao làm việc của bạn lên bản sửa đổi đã chọn. Hữu ích nếu bạn muốn bản sao làm việc của mình phản ánh một thời gian trong quá khứ hoặc nếu có thêm các cam kết với kho lưu trữ và bạn muốn cập nhật bản sao làm việc của mình từng bước một. Tốt nhất là cập nhật toàn bộ thư mục trong bản sao làm việc của bạn, không chỉ một tệp, nếu không bản sao làm việc của bạn có thể không nhất quán.

Nếu bạn muốn hoàn tác một thay đổi trước đó vĩnh viễn, thay vào đó hãy sử dụng Hoàn nguyên bản sửa đổi này.

Hoàn nguyên bản sửa đổi này Hoàn nguyên bản sửa đổi trước đó. Nếu bạn đã thực hiện một số thay đổi, và sau đó quyết định rằng bạn thực sự muốn quay trở lại cách mọi thứ trong phiên bản N, đây là lệnh bạn cần. Các thay đổi được hoàn tác trong bản sao làm việc của bạn để thao tác này không ảnh hưởng đến kho lưu trữ cho đến khi bạn cam kết thay đổi. Lưu ý rằng điều này sẽ hoàn tác tất cả các thay đổi được thực hiện sau khi sửa đổi đã chọn, thay thế tệp / thư mục bằng phiên bản trước đó.

Nếu bản sao làm việc của bạn ở trạng thái chưa sửa đổi, sau khi bạn thực hiện hành động này, bản sao làm việc của bạn sẽ hiển thị dưới dạng đã sửa đổi. Nếu bạn đã có thay đổi cục bộ, lệnh này sẽ hợp nhất các thay đổi hoàn tác vào bản sao làm việc của bạn.

Điều đang xảy ra trong nội bộ là Subversion thực hiện hợp nhất ngược tất cả các thay đổi được thực hiện sau khi sửa đổi được chọn, hoàn tác hiệu lực của các cam kết trước đó.

Nếu sau khi thực hiện hành động này, bạn quyết định rằng bạn muốn hoàn tác lại và đưa bản sao làm việc của bạn trở về trạng thái chưa sửa đổi trước đó, bạn nên sử dụng TortoiseSVN → Hoàn nguyên từ trong Windows Explorer, sẽ loại bỏ các sửa đổi cục bộ được thực hiện bởi hành động hợp nhất ngược này.

Nếu bạn chỉ muốn xem một tập tin hoặc thư mục trông như thế nào trong lần sửa đổi trước đó, hãy sử dụng Cập nhật để sửa đổi hoặc Lưu sửa đổi như ... thay vào đó.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.