কোনও প্রতিশ্রুতি পূর্বাবস্থায় ফেরা কিছুটা ভীতিজনক যদি আপনি জানেন না যে এটি কীভাবে কাজ করে। তবে আপনি যদি বুঝতে পারেন তবে এটি আশ্চর্যরকম সহজ।
বলুন আপনার এটি আছে, যেখানে সি হ'ল আপনার হেড এবং (ফ) আপনার ফাইলের অবস্থা।
(F)
A-B-C
↑
master
আপনি সি কমিট করতে চান এবং এটি আর কখনও দেখতে পাবেন না এবং স্থানীয়ভাবে পরিবর্তিত ফাইলগুলির সমস্ত পরিবর্তন হারাতে চান । তুমি এটা করো:
git reset --hard HEAD~1
ফলাফল হলো:
(F)
A-B
↑
master
এখন বি হেড। যেহেতু আপনি ব্যবহার করেছেন --hard
, আপনার ফাইলগুলি প্রতিশ্রুতি বিতে তাদের রাজ্যে পুনরায় সেট করা হয়েছে B.
আহ, তবে ধরা যাক সি করা কোনও বিপর্যয় ছিল না, তবে কিছুটা দূরে ছিল। আপনি প্রতিশ্রুতিটি পূর্বাবস্থায় ফেরাতে চান তবে আপনি আরও ভাল প্রতিশ্রুতি দেওয়ার আগে কিছুটা সম্পাদনার জন্য আপনার পরিবর্তনগুলি রাখতে চান । আপনার হেড হিসাবে সি দিয়ে আবার এখান থেকে শুরু হচ্ছে:
(F)
A-B-C
↑
master
আপনি বন্ধ রেখে এটা করতে পারেন, --hard
:
git reset HEAD~1
এই ক্ষেত্রে ফলাফল:
(F)
A-B-C
↑
master
উভয় ক্ষেত্রেই হেড সর্বশেষতম প্রতিশ্রুতির একমাত্র পয়েন্টার। আপনি যখন একটি করেন git reset HEAD~1
, আপনি গিটকে হেড পয়েন্টারটিকে একটি প্রতিশ্রুতি ফিরিয়ে আনতে বলুন। তবে (আপনি যদি না ব্যবহার করেন --hard
) তবে আপনার ফাইলগুলি যেমন ছিল তেমন ছেড়ে যান। সুতরাং এখন git status
আপনি সিটিতে পরীক্ষা করে দেখেছেন যে পরিবর্তনগুলি দেখায় আপনি কোনও জিনিস হারান নি!
হালকা টাচের জন্য, আপনি এমনকি করতে পারেন আপনার কমিট কিন্তু আপনার ফাইল এবং আপনার ছেড়ে পূর্বাবস্থা সূচক :
git reset --soft HEAD~1
এটি কেবল আপনার ফাইলগুলিকেই একা ছেড়ে দেয় না, এমনকি এটি আপনার সূচককে একা ফেলে দেয়। আপনি যখন করবেন git status
, আপনি দেখতে পাবেন যে একই ফাইলগুলি আগের মতোই সূচীতে রয়েছে। প্রকৃতপক্ষে, এই আদেশের ঠিক পরে, আপনি করতে পারেন git commit
এবং আপনি ঠিক যেমন প্রতিশ্রুতি করেছিলেন তা পুনরায় করা হবে।
আরও একটি জিনিস: ধরুন আপনি প্রথম উদাহরণের মতো একটি প্রতিশ্রুতি নষ্ট করেছেন, তবে তারপরে আবিষ্কার করেন যে এটির পরেও আপনার এটির দরকার ছিল ? শক্ত ভাগ্য, তাই না?
নাহ, এটি ফিরে পাওয়ার এখনও একটি উপায় আছে। টাইপ করুন git reflog
এবং আপনি (আংশিক) কমিট শের একটি তালিকা দেখতে পাবেন (যা হ্যাশগুলি) যা আপনি চারপাশে চলে এসেছেন you আপনি যে প্রতিশ্রুতি নষ্ট করেছেন তা সন্ধান করুন এবং এটি করুন:
git checkout -b someNewBranchName shaYouDestroyed
আপনি এখন সেই প্রতিশ্রুতি পুনরুত্থিত করেছেন। গিটে প্রায় 90 দিনের জন্য কমিটগুলি আসলে ধ্বংস হয় না, তাই আপনি সাধারণত ফিরে যেতে পারেন এবং এমন একটিটিকে উদ্ধার করতে পারেন যা আপনি পরিত্রাণ পেতে চাননি।