উত্তর:
আপনি git revert <commit>…সমস্ত এন কমিটের জন্য ব্যবহার করতে পারেন এবং তারপরে ইতিহাসটি অপরিবর্তিত রেখে যথারীতি চাপ দিন।
অথবা আপনি এর সাথে "রোল ব্যাক" করতে পারেন git reset --hard HEAD~n। আপনি যদি সর্বজনীন বা ভাগ করা ভাণ্ডারগুলিতে চাপ দিচ্ছেন তবে আপনি আপনার মূল শাখার উপর ভিত্তি করে অন্যদের কাজ সরিয়ে নিয়ে যেতে পারেন। গিট আপনাকে এটি করতে বাধা দেবে, তবে আপনি git push -fআপডেটটি জোর করতে ব্যবহার করতে পারেন ।
revertএটির ফলে আপনার বৈশিষ্ট্য শাখাগুলি "ইতিমধ্যে" একীভূত হিসাবে বিবেচিত হবে। এটা এ কারণে যে এই শাখা এর হয় আসলে একীভূত হচ্ছে। তবে পরিবর্তনগুলি উল্টে গেছে। সমাধান: চেরি-পিক বা রিভার্ট কমিটকে ফিরিয়ে দিন ।
reset --hardবৈশিষ্ট্যযুক্ত শাখাগুলিকে ইতিমধ্যে মার্জ করা হিসাবে বিবেচনা করবে? আমার ধারণা এটি না হয় (যেখানে revertহবে)।
এলমার্কো সঠিক ... তার পরামর্শ ভাগ করা / সর্বজনীন সংগ্রহস্থলের জন্য সেরা (বা, কমপক্ষে সরকারী শাখা)। যদি এটি ভাগ না করা হয় (বা আপনি অন্যকে ব্যাহত করতে ইচ্ছুক হন) তবে আপনি একটি নির্দিষ্ট রেফারিকেও চাপ দিতে পারেন:
git push origin old_master:master
অথবা, যদি কোনও নির্দিষ্ট কমিট SHA1 থাকে (সংক্ষিপ্ত আকারে 1e4f99e বলুন) আপনি এখানে ফিরে যেতে চাই:
git push origin 1e4f99e:master
ভাগ্যক্রমে আমি প্যাট নটজ এর সমাধানটি ব্যবহার করার মতো অবস্থানে ছিল যা অযাচিত প্রতিশ্রুতি পুরোপুরি সরিয়ে নিয়েছিল । যাইহোক, প্রাথমিকভাবে আমি ত্রুটি পেয়েছি
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
তবে ফোর্স ( -f) বিকল্প যুক্ত করে এই ত্রুটিটি ওভাররাইট করে
git push -f origin 52e36b294e:master
আপনার যদি প্রত্যন্ত রেপোতে সরাসরি অ্যাক্সেস থাকে তবে আপনি সর্বদা ব্যবহার করতে পারেন:
git reset --soft <sha1>
অস্তিত্বহীন কার্যকারী ডিরেক্টরিটি সংশোধন করার কোনও প্রচেষ্টা না হওয়ায় এটি কাজ করে। আরও তথ্যের জন্য দয়া করে আসল উত্তরটি দেখুন:
গিট বেয়ার স্টোরের মধ্যে আমি শেষ প্রতিশ্রুতিটি কীভাবে প্রকাশ করতে পারি?
git reset --hard [sha1]যেখানে sha1 হল কমিটের হ্যাশ সনাক্তকারী।