2010-08-11 31 views
20

Tôi đang làm việc trên máy chủ trực tiếp. Tôi đã cập nhật để tip và nó gây ra vấn đề: Tôi cần phải trở lại một changeset cụ thể (388), nơi mọi thứ đã OK.Mercurial: làm cách nào để hoàn nguyên về bản sửa đổi cụ thể?

Tôi không có thay đổi về bất kỳ giá trị nào trên máy chủ, bộ thay đổi cục bộ không quan trọng chút nào. Trong thực tế, tôi thực sự muốn giết bất kỳ thay đổi hoặc sáp nhập ngẫu nhiên cục bộ nào để không làm lẫn lộn mọi thứ.

Làm cách nào để hoàn nguyên về một thay đổi cụ thể và giết bất kỳ thay đổi cục bộ nào? Có điều gì đó để làm với:

hg revert 

---- CẬP NHẬT ---

Để làm rõ, những gì tôi muốn làm là lần đầu tiên trở lại tất cả mọi thứ tại địa phương để changeset 388, và sau đó đảm bảo rằng địa phương của tôi repo ở trạng thái như vậy khi tôi làm

hg status 

Tôi không có đầu ra. Nếu không, tôi có cảm giác khó chịu khi tôi kéo mũi tiếp theo, sẽ có xung đột để giải quyết - điều tôi muốn tránh, bởi vì những thay đổi cục bộ không có giá trị.

---- CẬP NHẬT ---

Đối với bất cứ ai khác trong tình huống này, những gì cuối cùng cố định nó đối với tôi là:

rm -rf <repo_dir> 
hg clone http://repository 
hg update -r 388 

Điều đó sẽ giết tất cả những thay đổi địa phương của bạn, vì vậy tiến hành thận trọng (nhưng đó là những gì tôi muốn trong trường hợp này).

+0

Chỉ cần một mẹo: kiểm tra 'hg help revert' để biết tài liệu về hoàn nguyên. Điều này cũng làm việc với các lệnh khác ('hg help [command name here]'). – derekerdmann

Trả lời

11
server: 
- .. 
- rev 386 
- rev 387 
- rev 388 
- rev 389 

clone to production 

-- testing stuff, it doesn't work! 
-- panic! 
-- rev 390 (in panic) 
-- rev 391 (in panic) 
-- cool down, thinking, need to go back to 388 
-- one way: hg update -C -rev 388 (to keep 390, 391) 
-- other way: rm -rf dir (to discard 390, 391) 
-- hg clone http://server/hg 
-- cd dir 
-- hg update 388 
-- testing, now works 

Ngoài ra còn một là tuyệt vời Purge extension. Công cụ rất chắc chắn, nó xóa tất cả các tập tin không được theo dõi từ thư mục làm việc.

+0

Ah - vì vậy để đạt được trạng thái mà tôi mô tả trong bản cập nhật ở trên, tôi cần xóa tất cả các tệp cục bộ hoặc tôi cần sử dụng tiện ích mở rộng Purge? làm cho tinh thần ... – AP257

+0

Cố định điều này bằng cách sử dụng rm-rf dir và hg clone/hg cập nhật 388, như bạn đã đề xuất. Tôi nghĩ rõ ràng là tôi muốn loại bỏ mọi thứ, nhưng dường như không phải từ những bình luận khác ..! Cảm ơn bạn đã giúp đỡ! – AP257

17

Chỉ cần sử dụng lệnh bên dưới để chuyển sang bản chỉnh sửa.

hg revert -r REV 

Xung đột với --all.

Để tiêu diệt tất cả các thay đổi cục bộ, --all sẽ hoạt động.

hg revert --all 

Không sử dụng rollback. Đó là một thủ tục không thể đảo ngược, vì vậy nên được sử dụng cẩn thận.

EDIT

Bạn có thể cập nhật với tùy chọn --clean. Điều đó sẽ loại bỏ bất kỳ thay đổi không được cam kết nào. Và sau đó cập nhật một số changeset.

+0

hg hoàn nguyên - all -r 388 đã hoạt động - cảm ơn bạn! Tuy nhiên, trạng thái hg vẫn hiển thị một loạt các sự khác biệt giữa kho lưu trữ cục bộ và kho lưu trữ từ xa, do tất cả các faffing và panicking tôi đã làm. Có cách nào để xóa tất cả các thay đổi cục bộ? – AP257

+0

Bạn không thể xóa các thay đổi cục bộ. Tôi sẽ sao chép repo từ máy chủ và sau đó hg cập nhật 388 lên bản sửa đổi bạn muốn. – Valentin

+1

@ AP257: bạn không cần phải ** hoàn nguyên **. Bạn cần ** cập nhật ** khi @jk trả lời – zerkms

5

Tôi không nghĩ rằng nó thực sự rõ ràng những gì bạn muốn nhưng giải thích của tôi sẽ là hg update -C -rev 388 nhưng bạn cũng có thể được sau khi hoàn nguyên, hoặc có thể (không) thậm chí rollback. Câu trả lời của tôi để this question gives a good difference between update and revert

bạn thực sự cần phải làm việc ra những gì bạn muốn xem trong bản sao làm việc và những gì bạn muốn tình trạng lịch sử trở nên giống như phải lựa chọn giữa chúng

+0

vì không rõ ràng: Tôi muốn bản sao làm việc được cập nhật 388 và lịch sử hoàn toàn trống. – AP257

+1

Lịch sử và trạng thái là hai điều khác nhau. Bạn có thể vào rev 388, với rev 389 và 390 trong lịch sử, nhưng không có thay đổi cục bộ để trạng thái trống. –

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