2010-07-09 24 views
53

Khi sử dụng Mercurial, làm thế nào để bạn hoàn tác mọi thay đổi trong thư mục làm việc kể từ lần commit cuối cùng? Có vẻ như đây sẽ là một điều đơn giản, nhưng nó thoát khỏi tôi.Mercurial: Làm cách nào để bạn hoàn tác các thay đổi?

Ví dụ: giả sử tôi có 4 cam kết. Sau đó, tôi thực hiện một số thay đổi đối với mã của mình. Sau đó, tôi quyết định rằng những thay đổi của tôi là xấu và tôi chỉ muốn quay trở lại trạng thái của mã tại lần commit cuối cùng của tôi. Vì vậy, tôi nghĩ tôi nên làm:

hg update 4 

với 4 là bản sửa đổi số lần cam kết mới nhất của tôi. Nhưng, Mercurial không thay đổi bất kỳ tệp nào trong thư mục làm việc của tôi. Tại sao không?

Trả lời

80

hg revert sẽ thực hiện thủ thuật.

Nó sẽ hoàn nguyên bạn về lần commit cuối cùng.

--all sẽ hoàn nguyên tất cả các tệp.

Xem liên kết cho mô tả Trang của người đàn ông về nó.

hg update thường được sử dụng để làm mới thư mục làm việc của bạn sau khi bạn kéo từ một đại diện chi nhánh hoặc trao đổi khác. hg up myawesomebranch. Nó cũng có thể được sử dụng để hoàn nguyên về một phiên bản cụ thể. hg up -r 12.

+0

Khi tôi đã làm điều này, tôi có thể thấy các tập tin .orig cho mỗi tập tin tôi đã hoàn nguyên khi tôi kiểm tra với tình trạng hg. Làm thế nào để đối phó với điều này ? –

6

hg revert là bạn của bạn:

hg revert --all 

hg update sáp nhập thay đổi của bạn để bản sao làm việc hiện tại của bạn với việc sửa đổi mục tiêu. Hợp nhất bản sửa đổi mới nhất với các tệp đã thay đổi của bạn (= bản sao làm việc hiện tại) dẫn đến những thay đổi tương tự mà bạn đã có, nghĩa là không có gì :-)

Nếu bạn muốn đọc trên Mercurial, tôi khuyên bạn nên hướng dẫn rất tuyệt vời Hg Init.

+0

pableu: bạn chính xác đúng về sao 'cập nhật hg 'hoạt động khi bạn có thay đổi trong bản sao làm việc của bạn: nó kết hợp chúng vào bản sửa đổi đích. Khi bạn đã ở bản sửa đổi mục tiêu đó, không có gì xảy ra. Tôi đã chỉnh sửa câu trả lời để nói điều này một cách tự tin hơn. –

16

Giải pháp thay thế cho hg reverthg update -C. Bạn có thể loại bỏ các thay đổi cục bộ của bạn và cập nhật một số sửa đổi bằng cách sử dụng lệnh này.

Tôi thường thích gõ hg up -C vì nó ngắn hơn hg revert --all --no-backup :)

1
hg revert --all 

và sau đó

hg pull -u 

công trình đối với tôi

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