Bạn muốn có lệnh hg rollback
, nhưng xem bên dưới nếu bạn đang sử dụng Mercurial 2.2 hoặc mới hơn.
Lệnh quay lại sẽ xóa giao dịch cuối cùng từ kho lưu trữ của bạn. Một cam kết là một giao dịch, vì vậy bạn có thể sử dụng điều này như
% hg commit -m 'My elaburate bugfix.' foo.c foo.h
% hg rollback
% hg commit -m 'My elaborate bugfix.' foo.c foo.h
Sau khi rollback các tập tin một lần nữa sẽ được xem như biến đổi, và điều này có nghĩa là thứ hai cam kết sẽ lưu trữ những thay đổi tương tự như người đầu tiên, nhưng với một thông điệp cam kết tốt hơn.
Hãy coi chừng:hg rollback
là mạnh hơn một chức năng "uncommit" đơn giản và bạn có thể sử dụng nó để vứt bỏ công việc nếu bạn không cẩn thận. Để vứt bỏ một cam kết làm
$ hg commit -m 'My big and very difficult bugfix'
$ hg pull --update
$ hg rollback
Bây giờ bạn đã mất cam kết cuối cùng bạn thực hiện và kể từ khi bạn cập nhật bản sao làm việc với một số sửa đổi khác, những thay đổi trong đó cam kết là đi. Vì vậy, bạn chỉ nên sử dụng hg rollback
để hoàn tác một cam kết nếu bạn chắc chắn rằng hg commit
thực sự là lệnh cuối cùng hoạt động trên bản sao làm việc.
Ngoài ra, nếu bạn chưa đưa ra thông báo cam kết trên dòng lệnh, thì bạn không thể chỉ cần nhấn mũi tên lên hai lần để làm lại cam kết sau khi quay trở lại. Tuy nhiên, Mercurial 1.5 và sau đó sẽ lưu thông điệp cam kết cuối cùng của bạn trong .hg/last-message.txt
để bạn luôn có thể tìm thấy nó sau khi quay trở lại.
Mercurial 2.2 có một mới --amend
cờ cho hg commit
. Điều này cho phép bạn sửa đổi cam kết cuối cùng với những thay đổi mới. Nó chỉ đơn giản là kết hợp các thay đổi được liệt kê bởi hg status
vào cam kết gốc, như thể bạn đã quay trở lại và cam kết một lần nữa.
Nguồn
2009-05-28 17:08:36
Đóng, nhưng không hoàn toàn. 'bzr revert' sẽ để lại tất cả các tệp tại chỗ, sẵn sàng để được cam kết lại. –
bạn có nghĩa là "bzr uncommit" không? –
err, vâng, đúng vậy ... Cảm ơn. –