আমিও এই সমস্যাটি পেরিয়ে এসেছি। আমি 2 বানিয়েছি commitএবং দুটি চুক্তি রোলব্যাক করে মুছে ফেলতে চেয়েছিলাম।
$ hg rollback
তবে hg rollbackকেবল দুটি প্রতিশ্রুতি নয়, শেষ প্রতিশ্রুতিতে ফিরে আসে। তখন আমি এটি উপলব্ধি করতে পারি নি এবং কোডটি পরিবর্তন করেছি।
যখন আমি 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আলাদা ফাইলটি করতে পারেন এবং আপনার কোডটি আপনার প্রকল্পে আবার যুক্ত করা যাবে।
$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff