আপনার স্থানীয় মেশিনে আপনার করা অনিয়মিত পরিবর্তন এবং দূরবর্তী সংগ্রহস্থলের বিষয়বস্তুর মধ্যে কোনো দ্বন্দ্ব থাকলে আপনি দূরবর্তী সংগ্রহস্থল থেকে কোড টানতে পারবেন না। এটি আপনাকে ওভাররাইট করা কোড থেকে রক্ষা করে যা আপনি রাখতে চান।
এই নির্দেশিকায়, আমরা "নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি মার্জ দ্বারা ওভাররাইট করা হবে" ত্রুটি এবং কেন ত্রুটিটি উত্থাপিত হয়েছে তা নিয়ে আলোচনা করি৷ আমরা একটি উদাহরণও দেব যাতে আপনি এই ত্রুটিটি কীভাবে সমাধান করবেন তা শিখতে পারেন৷
৷নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি মার্জ দ্বারা ওভাররাইট করা হবে
আপনার একটি সংগ্রহস্থলের স্থানীয় সংস্করণ প্রায়ই একটি দূরবর্তী সংগ্রহস্থলের তুলনায় ভিন্ন হবে। এটি গিট-এর একটি মূল বৈশিষ্ট্য:আপনি প্রস্তুত না হওয়া পর্যন্ত আপনি তাদের দূরবর্তী সংগ্রহস্থলে ঠেলে না দিয়ে স্থানীয়ভাবে পরিবর্তন করতে পারেন।
আপনি যখন রিমোট রিপোজিটরি থেকে কোড টানবেন, গিট সেই রিপোজিটরির বিষয়বস্তু পুনরুদ্ধার করবে এবং আপনার স্থানীয় মেশিনে সেভ করবে। এটি শুধুমাত্র তখনই ঘটতে পারে যখন আপনি যে ফাইলগুলি সংরক্ষণ করতে চান সেগুলির সমস্ত পরিবর্তনের প্রতিশ্রুতি দিয়ে থাকেন৷
আপনি যদি প্রথম পরিবর্তন না করে কোড টানতে চেষ্টা করেন, তাহলে আপনি "নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি মার্জ দ্বারা ওভাররাইট করা হবে" ত্রুটি দেখতে পাবেন৷ এটি শুধুমাত্র তখনই ঘটবে যদি আপনি একটি ফাইল সংশোধন করেন যা রিপোজিটরির রিমোট সংস্করণেও পরিবর্তন করা হয়েছে।
একটি উদাহরণ দৃশ্য
আসুন ck-git নামক একটি গিট রিপোজিটরিতে একটি সংশোধন করি। প্রথমে, এই সংগ্রহস্থলের একটি অনুলিপি ক্লোন করা যাক:
git clone https://github.com/career-karma-tutorials/ck-git
আমাদের কাছে এখন আমাদের স্থানীয় মেশিনে সংগ্রহস্থলের একটি অনুলিপি রয়েছে। এই সংগ্রহস্থলে একটি ফাইল রয়েছে:README.md। এর বিষয়বস্তু হল:
# ck-git
আমরা গিটহাবে গিয়ে সার্ভারে এই ফাইলটি পরিবর্তন করতে যাচ্ছি। আমাদের ফাইলে এখন বিষয়বস্তু রয়েছে:
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
# Career Karma Git
আমাদের সংগ্রহস্থলের স্থানীয় সংস্করণটি এখন সংগ্রহস্থলের দূরবর্তী সংস্করণের মূল মাস্টার শাখা থেকে আলাদা।
আমাদের সংস্করণে কোডটি রয়েছে যা দূরবর্তী সংগ্রহস্থলে ছিল যখন আমরা কোডটি টানতাম। রিমোট রিপোজিটরিতে আমরা README.md এ যে পরিবর্তন করেছি তা রয়েছে।
এখন, আসুন আমরা আমাদের স্থানীয় মেশিনে README.md পরিবর্তন করি:
# CK Git
আমরা আমাদের ফাইল পরিবর্তন করেছি. এখন, আমাদের রিমোট রিপোজিটরিতে আমরা যে পরিবর্তনগুলি করেছি তা টেনে আনার চেষ্টা করি যাতে আমরা সেগুলিকে আমাদের স্থানীয় মেশিনে সংরক্ষণ করতে পারি:
git pull
এই কমান্ডটি একটি ত্রুটি প্রদান করে:
... Updating a30b784..ec281fc error: Your local changes to the following files would be overwritten by merge: README.md Please commit your changes or stash them before you merge. Aborting
আমরা সংক্ষিপ্ততার জন্য এই আদেশের প্রতিক্রিয়া সংক্ষিপ্ত করেছি। আমাদের যে বার্তাটিতে ফোকাস করা উচিত তা হল "নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি মার্জ দ্বারা ওভাররাইট করা হবে"৷
সমাধান
এখন আমাদের ফাইলের দুটি কপি রয়েছে:একটি আমাদের স্থানীয় মেশিনে এবং একটি আমাদের দূরবর্তী সংগ্রহস্থলে। যখন আমরা আমাদের রিমোট রিপোজিটরি থেকে আমাদের কোড টেনে নিই, তখন গিট নিশ্চিত নয় যে ফাইলের কোন সংস্করণটি থাকবে।
এই ত্রুটিটি সমাধান করতে, আমরা হয় আমাদের কোড লুকিয়ে রাখতে পারি বা আমাদের কোড কমিট করতে পারি।
আমাদের কোড কমিট করার জন্য, আমরা আমাদের README.md ফাইলটি একটি প্রতিশ্রুতিতে যোগ করতে পারি এবং সেই ফাইলটি সম্বলিত একটি প্রতিশ্রুতি তৈরি করতে পারি:
git add README.md git commit -m "docs: Update README.md"
এটি আমাদের স্থানীয় মেশিনে README.md-এ করা পরিবর্তনগুলিকে আমাদের প্রকল্পের প্রতিশ্রুতির ইতিহাসে যুক্ত করবে। গিট এখন জানবে যে আমরা এই পরিবর্তনগুলি রাখতে চাই।
দ্বিতীয় সমাধান হল আমাদের পরিবর্তন লুকিয়ে রাখা। এটি আমাদের পরে দেখার জন্য আমাদের পরিবর্তনগুলি সংরক্ষণ করতে দেয়। আমরা git stash কমান্ড ব্যবহার করে আমাদের কোড স্ট্যাশ করতে পারি:
git stash
এই কমান্ডটি আমাদের পরিবর্তনকে একটি স্ট্যাশে সংরক্ষণ করে (আমাদের কোডটি "পরবর্তীতে লুকিয়ে রাখা হয়েছে")। এখন যেহেতু আমরা আমাদের কোডটি লুকিয়ে রেখেছি, আমরা আমাদের দূরবর্তী সংগ্রহস্থল থেকে নিরাপদে কোডটি টেনে আনতে পারি:
git stash pop
গিট স্ট্যাশের কোডটি গিট স্ট্যাশ পপ কমান্ড চালানোর মাধ্যমে দেখা যেতে পারে। এটি আমাদের ফাইলে করা পরিবর্তনগুলি দেখতে দেবে যা আমরা আমাদের সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ করিনি। এর মানে হল যে আমরা যদি সিদ্ধান্ত নিই যে আমরা পরে ফাইলে পরিবর্তন করতে চাই, আমরা তা করতে পারি।
উপসংহার
"নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি মার্জ দ্বারা ওভাররাইট করা হবে" ত্রুটিটি ঘটে যখন আপনি আপনার স্থানীয় মেশিনে একটি দূরবর্তী সংগ্রহস্থল টানতে চেষ্টা করেন যার বিষয়বস্তুগুলি আপনার সংগ্রহস্থলের স্থানীয় সংস্করণের বিষয়বস্তুর সাথে সাংঘর্ষিক।
এই ত্রুটিটি ঠিক করতে, হয় আপনার পরিবর্তনগুলিকে পরবর্তী সময়ের জন্য লুকিয়ে রাখুন বা আপনার পরিবর্তনগুলি কমিট করুন৷ একজন বিশেষজ্ঞের মতো এই ত্রুটিটি ঠিক করতে আপনার প্রয়োজনীয় জ্ঞান এখন আপনার আছে!