গিট পুল কমান্ড আপনাকে দূরবর্তী সংগ্রহস্থল থেকে একটি প্রকল্পে করা পরিবর্তনগুলি পুনরুদ্ধার করতে এবং সেই পরিবর্তনগুলিকে আপনার স্থানীয় মেশিনে ডাউনলোড করতে দেয়। গিট রিসেট কমান্ড ব্যবহার করে এই অপারেশনটি পূর্বাবস্থায় ফেরানো যেতে পারে। রিসেট কমান্ড একটি সংগ্রহস্থলকে তার ইতিহাসের পূর্ববর্তী পয়েন্টে ফিরিয়ে দেয়।
গিট পুল অপারেশনকে পূর্বাবস্থায় ফিরিয়ে আনতে গিট রিসেট কমান্ডটি কীভাবে ব্যবহার করতে হয় এই গাইডটি আলোচনা করে। এই কমান্ডটি কীভাবে ব্যবহার করতে হয় তা শিখতে আপনাকে সাহায্য করার জন্য এটি একটি উদাহরণ দিয়ে চলে।
গিট পুল:একটি ব্রেকডাউন
গিট পুল কমান্ড আপনার স্থানীয় সংগ্রহস্থলকে তার দূরবর্তী প্রতিরূপের সাথে আপ টু ডেট করে।
আপনি যখন গিট পুল কমান্ড চালাবেন, তখন গিট ফেচ কমান্ড চালিয়ে রিমোট রিপোজিটরিতে কোনো পরিবর্তন করা হয়েছে কিনা তা পরীক্ষা করবে। তারপরে, যদি পরিবর্তন করা হয়ে থাকে, fetch কমান্ড সেই পরিবর্তনগুলির জন্য মেটাডেটা পুনরুদ্ধার করবে।
এর পরে, গিট পুল কমান্ডটি গিট মার্জ চালায়। এই প্রক্রিয়াটি আপনার স্থানীয় মেশিনে git fetch কমান্ডের দ্বারা আবিষ্কৃত যেকোনো পরিবর্তনকে একত্রিত করে। এর মানে হল আপনি যখন গিট চালান তখন আপনার রিপোজিটরির স্থানীয় সংস্করণটি রিমোট রিপোজিটরির সাথে মেলে পরিবর্তন করা হবে।
আনডু গিট পুল
গিট পুল কমান্ডটিকে স্পষ্টভাবে পূর্বাবস্থায় ফিরিয়ে আনার কোন আদেশ নেই। বিকল্পটি হল গিট রিসেট ব্যবহার করা, যা একটি সংগ্রহস্থলকে পূর্ববর্তী প্রতিশ্রুতিতে ফিরিয়ে দেয়।
আমরা ck-git নামে একটি প্রকল্পে কাজ করছি। একজন সহযোগী সবেমাত্র গিটহাবে সংরক্ষিত প্রকল্পের দূরবর্তী সংস্করণে একটি প্রতিশ্রুতি ঠেলে দিয়েছে। আমরা এই পরিবর্তনগুলি পুনরুদ্ধার করতে চাই৷
এই পরিবর্তনগুলি পুনরুদ্ধার করতে, আমরা গিট পুল কমান্ড ব্যবহার করতে যাচ্ছি:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।
git pull
এই কমান্ডটি একটি বার্তা ফেরত দেয় যা আমাদের জানায় যে এটি মেটাডেটা টেনে এনেছে এবং রিমোট রিপোজিটরি থেকে আমাদের স্থানীয় মেশিনে পরিবর্তনগুলি ডাউনলোড করেছে:
remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/career-karma-tutorials/ck-git 77e7fc0..a8336fa master -> origin/master Updating 77e7fc0..a8336fa Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
একমাত্র ফাইল যা মাস্টার শাখায় পরিবর্তিত হয়েছে তা হল README.md। এই ফাইলটিতে পাঠ্যের একটি অতিরিক্ত লাইন রয়েছে যা পূর্ববর্তী প্রতিশ্রুতিতে বিদ্যমান ছিল না।
এখন, ধরা যাক আমরা এই অপারেশনটিকে পূর্বাবস্থায় ফিরিয়ে আনতে চাই। আমরা আমাদের স্থানীয় ভান্ডারে এই পরিবর্তন মেনে নিতে প্রস্তুত নই। অপারেশন পূর্বাবস্থায় ফিরিয়ে আনতে, আমাদের গিট রিসেট চালাতে হবে।
আপনি গিট রিসেট কমান্ডটি চালানোর আগে, আপনার জানা উচিত যে এই কমান্ডটি আপনার সংগ্রহস্থলে করা যেকোনো অনিয়মিত পরিবর্তনগুলিকে সরিয়ে দেবে। আপনি রিসেট কমান্ড চালানোর আগে আপনি যে কোনো পরিবর্তন সংরক্ষণ করতে চান তা নিশ্চিত করুন।
গিট-এ শেষ কমিট এ রিপোজিটরির আগের অবস্থায় ফিরে যেতে গিট রিসেট কমান্ডটি চালাই:
git reset 77e7fc0 --hard
এই কমান্ডটি আমাদের সংগ্রহস্থলকে শেষ প্রতিশ্রুতিতে তার অবস্থায় ফিরিয়ে দেয়:
Unstaged changes after reset: M README.md
-হার্ড পতাকা গিটকে বলে যে আমরা একটি নির্দিষ্ট প্রতিশ্রুতিতে কোডের বিষয়বস্তু সহ আমাদের কাজের ডিরেক্টরি পরিবর্তন করতে চাই।
বিকল্পভাবে, আমরা কোন প্রতিশ্রুতিতে ফিরে যেতে চাই তা নির্দিষ্ট করতে আমরা হেড স্টেটমেন্ট ব্যবহার করতে পারতাম:
git reset HEAD~1 --hard
এই বিবৃতিটি আমাদের সংগ্রহস্থলকে এক প্রতিশ্রুতিতে সরিয়ে দেয়। আমরা আরও কমিটগুলিতে ফিরে যেতে 1 নম্বর পরিবর্তন করতে পারি।
আমাদের README.md ফাইলটি এখন সেই অবস্থায় রয়েছে যা এটি শেষ কমিটের সময় ছিল। আপনি যদি গিট পুল কমান্ডটি চালানোর আগে ফাইলটিতে কোনও পরিবর্তন করেন যা প্রতিশ্রুতিবদ্ধ ছিল না, তবে সেই পরিবর্তনগুলি অ্যাক্সেসযোগ্য হবে না। এর কারণ হল গিট শুধুমাত্র প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি সংরক্ষণ করে।
উপসংহার
আপনি গিট পুল অপারেশন পূর্বাবস্থায় ফেরাতে গিট রিসেট কমান্ড ব্যবহার করতে পারেন। গিট রিসেট কমান্ড আপনার সংগ্রহস্থলকে তার ইতিহাসের একটি নির্দিষ্ট বিন্দুতে পুনরায় সেট করে। আপনি যদি গিট পুল চালানোর আগে ফাইলগুলিতে পরিবর্তন করেন যা আপনি কমিট করেননি, সেই পরিবর্তনগুলি চলে যাবে।
গিট রিসেট কমান্ড চালানোর আগে, নিশ্চিত করুন যে আপনি কোনো পরিবর্তন করেছেন। গিট রিসেট কমান্ডের কারণে আপনি যেকোনও অনিয়মিত পরিবর্তন হারাতে পারেন।
এখন আপনার কাছে এমন জ্ঞান রয়েছে যা আপনাকে একজন পেশাদারের মতো গিট পুল কমান্ডটিকে পূর্বাবস্থায় ফিরিয়ে আনতে হবে!