আপনি যদি প্রতিশ্রুতিবদ্ধ না হন
যদি আপনার পরিবর্তনগুলি অন্য শাখার সাথে সামঞ্জস্যপূর্ণ হয়
এটি প্রশ্নটি থেকে কেস কারণ ওপি একটি নতুন শাখায় প্রতিশ্রুতিবদ্ধ করতে চায় এবং যদি আপনার পরিবর্তনগুলি ওভাররাইটটি ট্রিগার না করে লক্ষ্য শাখার সাথে সামঞ্জস্য করে তবে তা প্রযোজ্য।
জন ব্রোডি দ্বারা গৃহীত উত্তরের মতো আপনি কেবল নতুন শাখাটি চেকআউট করে কাজটি করতে পারবেন:
git checkout -b branch_name
git add <files>
git commit -m "message"
যদি আপনার পরিবর্তনগুলি অন্য শাখার সাথে বেমানান হয়
আপনি যদি ত্রুটিটি পান:
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches
তারপরে আপনি নিজের কাজকে স্ট্যাশ করতে পারেন, একটি নতুন শাখা তৈরি করতে পারেন, তারপরে আপনার স্ট্যাশ পরিবর্তনগুলি পপ করতে পারেন এবং বিরোধগুলি সমাধান করতে পারেন:
git stash
git checkout -b branch_name
git stash pop
এটি এমন হবে যেন আপনি নতুন শাখা তৈরির পরে এই পরিবর্তনগুলি করেছিলেন। তারপরে আপনি যথারীতি প্রতিশ্রুতিবদ্ধ করতে পারেন:
git add <files>
git commit -m "message"
আপনি যদি প্রতিশ্রুতিবদ্ধ হয়
আপনি চাইলে কমিটগুলি মূল শাখায় রাখতে পারেন
চেরি-বাছাই সহ কার্ল নরুমের উত্তর দেখুন, যা এই ক্ষেত্রে সঠিক হাতিয়ার:
git checkout <target name>
git cherry-pick <original branch>
আপনি যদি কমিটগুলি মূল শাখায় রাখতে চান না
এই সম্ভাব্য নকলটিতে জোয়েটউইডেলের উত্তর দেখুন । উপরের যেকোন পদক্ষেপ যথাযথ হিসাবে অনুসরণ করুন, তারপরে মূল শাখাটি আবার রোল করুন:
git branch -f <original branch> <earlier commit id>
আপনি যদি গিটহাবের মতো ভাগ করে নেওয়া কোনও দূরবর্তী জায়গায় আপনার পরিবর্তনগুলিকে ঠেলে দিয়ে থাকেন তবে আপনি কী করছেন তা না জানলে আপনার এই রোল-ব্যাকটি চেষ্টা করা উচিত নয়।