বর্তমানে যা ঘটছে তা হ'ল, আপনার কাছে ফাইলগুলির একটি নির্দিষ্ট সেট রয়েছে, যা আপনি আগে মার্জ করার চেষ্টা করেছেন, তবে তারা মার্জ সংঘাতগুলি ছুঁড়ে দিয়েছে। আদর্শভাবে, যদি কেউ একীভূত সংঘাত পায়, তবে সেগুলি ম্যানুয়ালি সমাধান করতে হবে এবং ব্যবহার করে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ git add file.name && git commit -m "removed merge conflicts"
। এখন, অন্য ব্যবহারকারী তার সংগ্রহস্থলের প্রশ্নে থাকা ফাইলগুলি আপডেট করেছেন এবং তার পরিবর্তনগুলি সাধারণ প্রবাহের রেপোতে ঠেলে দিয়েছেন।
এটি ঘটে, আপনার (সম্ভবত) শেষ প্রতিশ্রুতি থেকে সংযুক্ত বিবাদগুলি সমাধান করা হয়নি, সুতরাং আপনার ফাইলগুলি ঠিকঠাকভাবে মার্জ করা হয়নি, এবং সেইজন্য ফাইলগুলির জন্য U
( unmerged
) পতাকা। সুতরাং এখন, যখন আপনি একটি করেন git pull
, গিটটি ত্রুটিটি ছুঁড়ে ফেলছে কারণ আপনার ফাইলটির কিছু সংস্করণ রয়েছে যা সঠিকভাবে সমাধান হয়নি।
এটি সমাধানের জন্য, আপনাকে প্রশ্নাবলীতে সংহত বিরোধগুলি সমাধান করতে হবে এবং আপনি একটি করার আগে পরিবর্তনগুলি যুক্ত করতে এবং প্রতিশ্রুতিবদ্ধ git pull
।
সমস্যার পুনরায় উত্পাদন এবং সমাধানের নমুনা:
# Note: commands below in format `CUURENT_WORKING_DIRECTORY $ command params`
Desktop $ cd test
প্রথমে সংগ্রহস্থল কাঠামো তৈরি করা যাক
test $ mkdir repo && cd repo && git init && touch file && git add file && git commit -m "msg"
repo $ cd .. && git clone repo repo_clone && cd repo_clone
repo_clone $ echo "text2" >> file && git add file && git commit -m "msg" && cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
এখন আমরা রেপো_ক্লোনতে আছি এবং আপনি যদি git pull
এটি করেন তবে এটি বিরোধ সৃষ্টি করবে
repo_clone $ git pull origin master
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/anshulgoyal/Desktop/test/test/repo
* branch master -> FETCH_HEAD
24d5b2e..1a1aa70 master -> origin/master
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
যদি আমরা ক্লোনটির দ্বন্দ্বগুলি উপেক্ষা করে এবং এখনই মূল রেপোতে আরও কমিট করে তুলি,
repo_clone $ cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
এবং তারপরে আমরা একটি করি git pull
, আমরা পাই
repo_clone $ git pull
U file
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
নোট করুন যে file
এখনটি একটি নিমজ্জিত অবস্থায় রয়েছে এবং আমরা যদি এটি করি তবে আমরা git status
স্পষ্টভাবে দেখতে পাচ্ছি:
repo_clone $ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file
সুতরাং, এটি সমাধান করার জন্য, আমাদের প্রথমে মার্জ হওয়া দ্বন্দ্বটি সমাধান করা উচিত যা আমরা আগে উপেক্ষা করেছি
repo_clone $ vi file
এবং এর বিষয়বস্তু সেট করে
text2
text1
text1
এবং তারপরে এটি যুক্ত করুন এবং পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন
repo_clone $ git add file && git commit -m "resolved merge conflicts"
[master 39c3ba1] resolved merge conflicts