2012-08-25 25 views
14

Tôi muốn sửa đổi của tôi cam kết cuối cùng, nhưng chạyLàm thế nào để sửa đổi một "công cộng" changeset trong Mercurial

hg commit --amend 

mang lại cho tôi

abort: cannot amend public changesets 

mặc dù tôi biết rằng nó an toàn để chỉnh sửa changeset. Làm thế nào tôi có thể thay đổi giai đoạn của cam kết cuối cùng của tôi và/hoặc nói với Mercurial rằng nó an toàn để sửa đổi?

Trả lời

27

Trên wiki Mercurial, có một số overview of phases tốt.

Để chuyển đổi dòng điện cam kết từ "công cộng" "bản nháp" cam kết để cho phép sửa đổi, sử dụng

hg phase --draft --force . 

(hoặc thay thế . với phiên bản khác nếu bạn muốn chỉnh sửa một changeset khác nhau).

+0

Đẩy nó lên thượng nguồn vẫn dẫn đến lịch sử của hai lần commit, và 'hg log' cục bộ cũng xác nhận hai cam kết - có cách nào xung quanh điều này không? Vì vậy, nó chỉ cho thấy cam kết sửa đổi? –

+4

Không, nếu bạn đã đẩy các changeset thì bạn không nên sửa đổi nó, đó là lý do tại sao hg ngăn cản bạn làm như vậy. (Trong một số trường hợp, bạn biết rằng nó chỉ được đẩy tới một kho lưu trữ riêng tư khác của bạn, trong trường hợp này câu trả lời này hữu ích.) –

+1

@Daniel Sokolowski, bạn có thể đã loại bỏ lần commit đầu tiên bằng cách hoàn tác/quay lại thượng nguồn repo. Nhưng bạn cần phải nhanh chóng, và làm điều này trước khi bất kỳ bộ thay đổi tiếp theo được đẩy vào nó. –

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