2011-02-07 12 views

Trả lời

13

Bạn có thể làm một repo mới với hg clone:.

hg clone -r last_good_changeset localrepo newlocalrepo 
+0

Đây là câu trả lời yêu thích của tôi vì nó không yêu cầu bất kỳ phần mở rộng nào. người ta có thể dễ dàng sao chép một tập con của một repo và nó gần như tức thời. –

+0

@ Ry4an ... vừa nhận ra bạn thực sự đã trả lời câu hỏi đó: http://stackoverflow.com/questions/4172753/how-to-get-rid-of-some-changeset-in-hg/4173512#4173512! 1 trên câu trả lời ban đầu của bạn;) – VonC

+0

heh, không phải lo lắng. Tôi đã tốt hơn về những điều này tôi đã cố gắng để làm cho các câu hỏi như là một bản sao. –

22

Bạn có thể sử dụng lệnh hg strip, một phần của phần mở rộng mq:

hg strip REV 

Điều này sẽ loại bỏ phiên bản + tất cả hậu duệ của nó.

Trước khi bạn cố gắng này, tạo một bản sao/bản sao của kho để thử nghiệm trong

+1

Tôi tin rằng đây sẽ là câu trả lời thực sự cho câu hỏi. Một trong những khác là một bản sao của repo được đặc biệt yêu cầu KHÔNG phải là một lựa chọn trong câu hỏi ban đầu ("mà không cần phải sao chép lại"). Khi tôi đang tìm kiếm giải pháp giống như bài gốc, câu trả lời cho câu hỏi của tôi và câu trả lời khác KHÔNG phải do bản sao ... Nếu câu trả lời khác là câu trả lời của poster gốc nên câu hỏi được cập nhật để phản ánh điều đó và giúp đỡ mọi người trong khi tìm kiếm? – GazB

+0

Tôi đồng ý với bạn GazB –

+0

Hướng dẫn về cách bật tiện ích mở rộng 'Strip' có sẵn trên [Hg Wiki for Strip] (https://www.mercurial-scm.org/wiki/StripExtension). –

0

Nếu bạn đang sử dụng eclipse lanh lợi, bạn có thể rollback một lần, sau đó đặt các thay đổi đó, sau đó xuất nhiều commit liên tiếp như các bản vá, loại bỏ các cam kết đó, sau đó nhập các bản vá đó theo cùng thứ tự, vì vậy trong trường hợp bạn có các bản vá lỗi xung đột, chúng sẽ ghi đè lên nhau theo cách mong muốn.

Cuối cùng, bạn có thể hủy bỏ số lần rollback đầu tiên của mình. Điều này đạt được hiệu quả tương tự như khi bạn quay trở lại nhiều lần.