Tôi biết rằng rollbacks có thể loại bỏ các cam kết từ changeset mới nhất trong một kho lưu trữ cục bộ. Tuy nhiên, có thể loại bỏ tất cả các cam kết mới nhất kể từ lần đẩy trước đó mà không cần phải sao chép lại kho lưu trữ chia sẻ không?Rollback nhiều cam kết (trước khi Pushed cho công chúng) trong Mercurial
Trả lời
Bạn có thể làm một repo mới với hg clone
:.
hg clone -r last_good_changeset localrepo newlocalrepo
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
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
Tôi đồng ý với bạn GazB –
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). –
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.
Đâ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. –
@ 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
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. –