ฉันเจอปัญหานี้ด้วย ฉันทำ 2 commitและต้องการย้อนกลับและลบทั้งสองข้อตกลง
$ hg rollback
แต่hg rollbackเพิ่งย้อนกลับไปสู่การคอมมิชชันล่าสุดไม่ใช่ 2 คอมมิท ในเวลานั้นฉันไม่ได้ตระหนักถึงสิ่งนี้และฉันเปลี่ยนรหัส
เมื่อฉันพบว่าhg rollbackมีการย้อนกลับหนึ่งข้อตกลงฉันพบว่าฉันสามารถhg strip #changeset#ใช้ได้ ดังนั้นผมใช้hg log -l 10ในการค้นหาล่าสุด 10 stripกระทำและได้รับการแก้ไขที่ถูกต้องผมอยากจะ
$ hg log -l 10
changeset: 2499:81a7a8f7a5cd
branch: component_engine
tag: tip
user: myname<myname@email.com>
date: Fri Aug 14 12:22:02 2015 +0800
summary: get runs from sandbox
changeset: 2498:9e3e1de76127
branch: component_engine
user: other_user_name<name@email.com>
date: Mon Aug 03 09:50:18 2015 +0800
summary: Set current destination to a copy incoming exchange
......
$ hg strip 2499
abort: local changes found
อะไรabort: local changes foundหมายถึง? หมายความว่าhgพบการเปลี่ยนแปลงในรหัสที่ยังไม่ได้ส่งมอบ ดังนั้นเพื่อแก้ปัญหานี้คุณควรhg diffจะบันทึกรหัสที่คุณมีการเปลี่ยนแปลงและและhg revert hg strip #changeset#เช่นนี้
$ hg diff > /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
$ hg revert file_you_have_changed
$ hg strip #changeset#
หลังจากที่คุณทำข้างต้นคุณสามารถpatchไฟล์ diff และรหัสของคุณสามารถเพิ่มกลับไปยังโครงการของคุณ
$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff