আমিও এই সমস্যাটি পেরিয়ে এসেছি। আমি 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