ฉันเจอปัญหานี้ด้วย ฉันทำ 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