Tôi đã sử dụng hg shelve
trong một kho lưu trữ, nơi tôi đã có một số thay đổi chưa hoàn thành vì tôi cần chuyển sang một đầu khác và thực hiện các thay đổi không liên quan.Làm cách nào để sửa chữa một kho lưu trữ bị hỏng bởi hg unshelve?
Khi công việc của tôi trên đầu khác được cam kết, tôi đã chuyển về đầu mà tôi đã sử dụng ban đầu hg shelve
và chạy lệnh hg unshelve
. Đây là kết quả:
$ hg unshelve
unshelving change 'default'
adding changesets
adding manifests
adding file changes
added 1 changesets with 4 changes to 4 files (+1 heads)
abort: uncommitted changes
$ hg diff
warning: ignoring unknown working parent 893e15ecb5b4!
$
Tôi đã chạy hg head
trước và sau lệnh unshelve
và thấy kết quả giống hệt nhau. Cam kết 893e15ecb5b4
chưa bao giờ tồn tại, tôi không có đầu mối nào Mercurial nhận được nó.
Trong trường hợp có liên quan, tôi đang chạy phiên bản Mercurial 2.8.2 trên Ubuntu 14.04.
Làm cách nào để lấy lại kho lưu trữ ở trạng thái hoạt động và làm cách nào để tôi có thể nhận lại các thay đổi bị hoãn?
'hg debugrebuildstate' có lẽ là những gì bạn cần thay vì # 2. –
@MarkTolonen Bởi vì nó đơn giản hơn những gì tôi đã làm? Hoặc bởi vì sẽ có thêm thông tin có thể không đồng bộ? Nếu sau này thì thông tin nào sẽ không đồng bộ? – kasperd
Nó buộc Mercurial phải xây dựng lại trạng thái bên trong của nó, vì vậy tôi tưởng tượng nó chính xác hơn. Tôi đã nhận được mẹo từ http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/ –