মার্জ কনফ্লিক্ট (Merge Conflict) কী?

যখন আপনি অন্য কোনো ব্রাঞ্চকে আপনার বর্তমান কাজের ব্রাঞ্চের সাথে মার্জ করতে চান, তখন মূলত অন্য একটি কনটেক্সট থেকে পরিবর্তন নিয়ে এসে আপনার বর্তমান ফাইলগুলোর সাথে মিশিয়ে দিচ্ছেন।

কিন্তু যদি একই ফাইলের একই লাইন একাধিক ব্যক্তি পরিবর্তন করে থাকেন, অথবা একজন ফাইল ডিলিট করে ফেলেছেন আর অন্যজন সেটি পরিবর্তন করেছেন — তখন গিট বুঝতে পারে না কোন ভার্সন রাখা উচিত।
এই পরিস্থিতিতেই গিট ফাইলটিকে conflict অবস্থায় চিহ্নিত করে। আপনাকেই সেটি সমাধান করতে হয়, তারপর কাজ চালিয়ে যেতে পারবেন।

মার্জ কনফ্লিক্ট কীভাবে সমাধান করবেন?

যখন merge conflict হয়, গিট ফাইলের ভেতরে বিশেষ চিহ্ন দিয়ে সমস্যাযুক্ত অংশগুলো দেখায়।

এটি সাধারণত এরকম থাকে:

<<<<<<< HEAD:mergetest
This is my third line
=======
This is a fourth line I am adding
>>>>>>> 4e2b407f501b68f8588aa645acafffa0224b9b78:mergetest


<<<<<<< HEAD: এখানে আপনার বর্তমান ব্রাঞ্চের কনটেন্ট থাকবে।

=======: উপরের (আপনার ব্রাঞ্চের) পরিবর্তন আর নিচের (অন্য ব্রাঞ্চের) পরিবর্তনের মাঝে পার্থক্য বোঝানোর জন্য ব্যবহৃত হয়।

>>>>>>>: এখানে অন্য ব্রাঞ্চ থেকে আসা পরিবর্তনগুলো থাকে।

👉 আপনাকে ফাইলটি এডিট করে ঠিক করতে হবে কোন কনটেন্ট থাকবে।

হয় আপনার পরিবর্তন রাখতে পারেন

নয়তো অন্যজনের পরিবর্তন রাখতে পারেন

অথবা দুইটিকে মিলিয়ে একটি নতুন ভার্সন বানাতে পারেন।

কাজ শেষে অবশ্যই <<<<<<<, =======, >>>>>>> এই মার্কার লাইনগুলো মুছে ফেলতে হবে।

সমাধানের ধাপ:

ফাইল এডিট করে কনফ্লিক্ট ঠিক করুন।

পরিবর্তন নিশ্চিত করতে git add করুন।

সব টেস্ট রান করে নিশ্চিত হোন যে সমাধান সঠিক হয়েছে।

👉 চাইলে আপনার IDE-এর জন্য প্লাগইন ব্যবহার করতে পারেন, যা ভিজ্যুয়ালভাবে কনফ্লিক্ট রেজলভ করা সহজ করে দেয়।

কীভাবে একটি Merge বাতিল করবেন?

যদি মার্জ করার সময় ভুল হয় বা মাঝপথে বাতিল করতে চান, তাহলে নিচের কমান্ড ব্যবহার করতে পারেন:

git merge --abort


এটি মার্জ প্রক্রিয়াটি থামিয়ে দেয় এবং আপনার ব্রাঞ্চকে আগের অবস্থায় ফিরিয়ে নিয়ে যায়।