2010-10-20 28 views
68

Tôi goofed lên một hợp nhất. Tôi muốn hoàn nguyên rồi thử lại.
Có cách nào để hoàn nguyên hợp nhất trước khi hợp nhất không?Làm thế nào để hủy bỏ một hợp nhất trong mercurial?

hg revert không làm những gì tôi muốn, nó chỉ hoàn nguyên văn bản của tệp. Mercurial hủy bỏ nỗ lực thứ hai của tôi tại sáp nhập và phàn nàn hợp nhất ban đầu vẫn không được cam kết.

Có cách nào để hoàn tác hợp nhất sau khi lệnh hg merge nhưng trước khi lệnh đó được cam kết không?

+0

trùng lặp có thể xảy ra của [Làm thế nào để từ bỏ một hg hợp nhất?] (Http://stackoverflow.com/questions/2570087/how-to-abandon-a-hg-merge) – Rodrigue

Trả lời

86

hg update -C <one of the two merge changesets>

+0

đơn giản, hiệu quả và, tôi suy nghĩ, cách tốt nhất để làm điều đó! : D –

+37

Một cách khác chỉ đơn giản là 'hg update --clean. ' –

+1

không được nhầm lẫn với -c (chữ thường)! – SystemParadox

35

Sau khi bạn làm hg merge, nhưng trước khi hg commit, bản sao làm việc của bạn có hai bố mẹ: phụ huynh đầu tiên là changeset bạn đã được cập nhật để trước khi hợp nhất và phụ huynh thứ hai là changeset bạn đang sáp nhập với. Mercurial sẽ không cho phép bạn làm hg merge một lần nữa miễn là bản sao làm việc của bạn có hai cha mẹ.

Bạn có hai lựa chọn về cách thức tiến hành:

  1. Nếu bạn muốn hủy bỏ việc hợp nhất và nhận được trở lại nơi mà bạn bắt đầu, sau đó làm

    hg update -C . 
    

    này sẽ cập nhật bản sao làm việc để khớp với phụ huynh đầu tiên: . luôn biểu thị cha mẹ đầu tiên của bản sao làm việc.

  2. Nếu bạn muốn tái nhập một số tác phẩm sau đó làm

    hg resolve fileA fileB 
    

    này sẽ tái khởi động các công cụ hợp nhất giống như khi bạn đã làm hg merge. Lệnh giải quyết tốt nếu bạn tìm hiểu tại hg merge-thời gian các công cụ hợp nhất của bạn được định cấu hình kém: sửa cấu hình và chạy hg resolve --all. Bạn có thể chạy hg resolve bao nhiêu lần tùy thích cho đến khi bạn hài lòng với việc hợp nhất.

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