2013-05-22 33 views

Trả lời

-3

LƯU Ý: Câu trả lời này hiện không được chấp nhận. Hãy xem the answer từ @Sorina Sandu thay thế.


Xem hg help commit, nơi nó nói:

Cờ --amend có thể được sử dụng để sửa đổi phụ huynh của thư mục làm việc với một mới cam có chứa những thay đổi trong các phụ huynh trong ngoài những hiện được báo cáo theo "trạng thái hg", nếu có. Cam kết cũ được lưu trữ trong gói sao lưu trong ".hg/strip-backup" (xem "gói trợ giúp hg" và "hg giúp bỏ nhóm" về cách khôi phục nó).

+5

Vui lòng cải thiện câu trả lời này bằng cách giải thích các bước cần được thực hiện sau khi nhóm không thực hiện được cam kết không được đặt tên. – akuhn

+0

@akuhn, tôi nghĩ rằng đó là 'hg merge' và sau đó' hg commit -m 'message_for_the_last_commit'', nhưng nó làm rối loạn lịch sử một chút. – oblalex

+0

Nói chung, bạn sẽ chỉ là 'sửa đổi 'các' tip' chưa được giải quyết mới tự cam kết, để bạn có thể cho nó một thông báo lỗi có ý nghĩa, hoặc bạn sẽ làm như @oblalex được đề xuất và 'hợp nhất'. Trong nhiều trường hợp, bạn sẽ muốn nhận thông điệp cam kết của mẹo cũ (để lại bởi 'hg unbundle') làm thông điệp được sử dụng với mẹo mới. –

36

Bạn có thể sử dụng hg reflog (từ journal extension) và hg reset <hash>.

hg reflog -v 

nên cung cấp cho một cái gì đó như:

<old-hash> -> <new-hash> <user> <timestamp> commit --amend <some-path> 

nếu đó là sửa đổi mà bạn muốn phục hồi, chỉ cần sử dụng:

hg reset <old-hash> 

Các cam kết sẽ được chuyển tới những gì là trước đây đã và các thay đổi đã được sửa đổi giờ đây sẽ là những thay đổi không được cam kết (hãy kiểm tra bằng cách sử dụng hg statushg diff).

+6

đây là câu trả lời đúng. mercurial không hỗ trợ reflog và thiết lập lại –

+0

yep, điều này làm việc trong mercurial chỉ hoàn toàn –

+0

@ JacobKrall Điều này làm việc cho tôi hoàn hảo với Mercurial. – zzy

2
  1. Tìm tất cả các sao lưu được lưu trong .hg/strip-backup thư mục
  2. hg unbundle <latest backup>
  3. Bây giờ bạn nên có hai đầu - một với sửa đổi cam kết, một trong những khác với hai cam kết (một đầu tiên - cũ cam kết trước khi sửa đổi, một giây Bạn có thể làm hg histedit để thay đổi nó (ví dụ: chọn edit để đạt được trạng thái ngay trước cam kết, tức là khi bạn có thể xem tất cả các thay đổi bằng cách sử dụng hg diff).

Đừng quên bỏ qua đầu cũ.

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