গিট আপনাকে আপনার স্থানীয় মেশিনে ফাইল টানতে বাধা দেয় যদি কোনো অসংরক্ষিত বা আনট্র্যাক করা পরিবর্তনগুলি মার্জ অপারেশন দ্বারা ওভাররাইট করা হয়। আপনি আপনার স্থানীয় কম্পিউটারে যে পরিবর্তনগুলি পেতে চান তা টেনে আনতে গিটকে জোর করতে আপনি ফোর্স পুল পদ্ধতি ব্যবহার করতে পারেন।
এই নির্দেশিকায়, আমরা একটি উদাহরণের সাথে আলোচনা করি, কিভাবে একটি গিট রিপোজিটরির বিষয়বস্তু জোর করে টানতে হয়। আমরা গিট পুল এবং আনয়ন কমান্ড সম্পর্কে কথা বলব, এবং জোর করে পুল করার জন্য রিসেট বিকল্পটি কীভাবে ব্যবহার করবেন।
টানা কি?
একটি গিট পুল অপারেশন রিমোট রিপোজিটরি থেকে সমস্ত মেটাডেটা এবং ফাইল ডাউনলোড করে এবং পুনরুদ্ধার করা ডেটার উপর ভিত্তি করে স্থানীয় সংগ্রহস্থল আপডেট করে।
পুলিং হল একটি রিপোজিটরির রিমোট সংস্করণের সাথে সামঞ্জস্যপূর্ণ আপনার স্থানীয় ফাইলগুলি আনতে ব্যবহৃত পদ্ধতি। আপনি যদি রিমোট রিপোজিটরিতে অন্য কেউ করা পরিবর্তনগুলি ডাউনলোড করতে চান তবে আপনাকে একটি সংগ্রহস্থল টানতে হবে। টানা স্বয়ংক্রিয়ভাবে ঘটবে না।
যখন আপনার কাছে আনট্র্যাক করা ফাইলগুলি ওভাররাইট করা হবে তখন টানা ঘটতে পারে না। এর মানে হল আপনার স্থানীয় শাখায় আপনার কাছে একটি ফাইল রয়েছে যা গিট সংগ্রহস্থলে যোগ করা হয়নি এবং টান ঘটলে প্রতিস্থাপন করা হবে।
আপনার স্থানীয় মেশিনে অসংরক্ষিত পরিবর্তনগুলি থাকলে আপনি একটি সংগ্রহস্থল টানতে অক্ষম হন যা পুল দ্বারা ওভাররাইট করা হবে৷
Git:জোর করে টানুন
আমরা ck-git নামক একটি সংগ্রহস্থলে কাজ করছি, যেখানে একটি ওয়েব প্রকল্পের কোড রয়েছে। একজন সহযোগী এইমাত্র README.md নামে একটি ফাইল আপডেট করেছে৷ আমরা আমাদের মেশিনে সেই ফাইলটি আপডেট করেছি এবং রিপোজিটরিতে আমাদের পরিবর্তনগুলি পুশ করিনি।
দেখা যাক যখন আমরা আমাদের পরিবর্তনগুলি টানার চেষ্টা করি তখন কী ঘটে:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
git pull
এই কমান্ডটি একটি ত্রুটি প্রদান করে:
error: Your local changes to the following files would be overwritten by merge: README.md Please, commit your changes or stash them before you can merge.
আমরা তিনটি বিকল্প আছে. আমরা আমাদের পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারি, সেগুলি লুকিয়ে রাখতে পারি, বা গিটকে যেভাবেই হোক পরিবর্তনগুলি টানতে বাধ্য করতে পারি। এগুলো আমাদের ফাইল ওভাররাইট করবে।
আমরা গিটকে পরিবর্তনগুলি টেনে আনতে বাধ্য করতে পারি যে কোনও পরিবর্তন আনা হয়েছে এবং তারপরে সেই পরিবর্তনগুলি দেখানোর জন্য আমাদের সংগ্রহস্থল রিসেট করে। গিট ফেচ কমান্ড ব্যবহার করে পরিবর্তনগুলি আনার মাধ্যমে শুরু করা যাক:
git fetch --all
এই কমান্ডটি আমাদের দূরবর্তী সংগ্রহস্থলে করা পরিবর্তনগুলির জন্য সমস্ত মেটাডেটা পুনরুদ্ধার করে। পরবর্তী, আমরা আমাদের বর্তমান শাখা ব্যাক আপ করতে যাচ্ছি। আমাদের কোড ওভাররাইট হয়ে গেলে আমরা যেন আমাদের কাজ হারাতে না পারি তা নিশ্চিত করার জন্য আমরা এটি করি।
আমরা git branch কমান্ড ব্যবহার করে আমাদের শাখা ব্যাক আপ করতে পারি:
git branch backup
এই কমান্ডটি "ব্যাকআপ" নামে একটি নতুন শাখা তৈরি করে। এখন যেহেতু আমাদের ব্যাকআপ শাখা আছে, আমরা আমাদের রিপোজিটরি রিসেট করতে পারি আমাদের রিমোট রিপোজিটরির বিষয়বস্তু দেখাতে।
আমরা আমাদের সংগ্রহস্থল আপডেট করতে গিট রিসেট কমান্ড ব্যবহার করতে যাচ্ছি:
git reset --hard origin/master
-হার্ড বিকল্পটি রিমোট রিপোজিটরি থেকে সমস্ত ফাইল ডাউনলোড করে এবং সেগুলিকে প্রকল্পের আপনার স্থানীয় কাজের অনুলিপিতে যুক্ত করে। এটি আপনার করা যেকোনো পরিবর্তন ওভাররাইট করবে।
উৎপত্তি/মাস্টার স্টেটমেন্ট সেই শাখাকে বোঝায় যেটি আমরা পুনরুদ্ধার করছি। আমরা আমাদের "অরিজিন" রিমোট রিপোজিটরি থেকে "মাস্টার" শাখার বিষয়বস্তু ডাউনলোড করছি।
আপনি যদি এমন একটি সংগ্রহস্থলের সাথে কাজ করছেন যার একটি ভিন্ন শাখা বা দূরবর্তী নাম রয়েছে, তাহলে আপনি কীভাবে রিসেট কমান্ড ব্যবহার করবেন তা নির্দেশ করতে এই সূত্রটি ব্যবহার করতে পারেন:
git reset --hard <remote>/<branch>
গিট রিসেট কমান্ডটি আমাদের সংগ্রহস্থলকে আমরা নিয়ে আসা সাম্প্রতিকতম প্রতিশ্রুতিতে পুনরায় সেট করে।
অনিয়মিত পরিবর্তন সংরক্ষণ করা হচ্ছে
আপনি গিট স্ট্যাশ কমান্ড ব্যবহার করে যে অনিয়মিত পরিবর্তনগুলি করেছেন তা সংরক্ষণ করতে পারেন। এই কমান্ডটি আপনাকে পরবর্তীতে আপনার কোডকে "স্ট্যাশ" করতে দেয়। আসুন আমাদের কোডের একটি স্ট্যাশ তৈরি করি:
git stash
আমাদের সংগ্রহস্থলে আমরা যে সমস্ত পরিবর্তন করেছি সেগুলি লুকিয়ে রাখা হবে। যখন আমরা আবার সেই পরিবর্তনগুলির সাথে কাজ করতে প্রস্তুত হই, তখন আমরা আমাদের স্ট্যাশকে "পপ" করতে পারি:
git stash pop
আপনি আমাদের গিট স্ট্যাশ টিউটোরিয়ালে গিট স্ট্যাশের সাথে সংরক্ষণ সম্পর্কে আরও পড়তে পারেন।
উপসংহার
আপনি দূরবর্তী সংগ্রহস্থল থেকে বিষয়বস্তু টানতে একটি গিট সংগ্রহস্থলকে বাধ্য করতে পারেন। এটি করার জন্য, আপনাকে সংগ্রহস্থলের বিষয়বস্তু আনতে হবে। একবার আপনি সংগ্রহস্থলটি নিয়ে গেলে, আপনি আপনার কোডবেস ব্যবহার করতে চান এমন আপনার দূরবর্তী সংগ্রহস্থলের শাখায় আপনার পরিবর্তনগুলি পুনরায় সেট করতে পারেন।
এখন আপনার কাছে এমন জ্ঞান আছে যা আপনাকে একজন পেশাদারের মতো জোর করে গিট পুল অপারেশন করতে হবে!