নির্বাচিতভাবে একটি শাখা থেকে অন্য শাখায় ফাইলগুলি মার্জ করতে, চালান
git merge --no-ff --no-commit branchX
branchX
বর্তমান শাখায় আপনি যে শাখাটি মার্জ করতে চান তা কোথায় ।
--no-commit
বিকল্প আসলে তাদের সংগঠনের ছাড়া ফাইল যে গীত দ্বারা মার্জ করা হয়েছে মঞ্চ হবে। এটি আপনাকে মার্জড ফাইলগুলিকে পরিবর্তন করতে এবং তারপরে সেগুলি নিজেই প্রতিশ্রুতিবদ্ধ করার সুযোগ দেবে।
আপনি কীভাবে ফাইলগুলি মার্জ করতে চান তার উপর নির্ভর করে চারটি কেস রয়েছে:
1) আপনি একটি সত্য মার্জ করতে চান।
এই ক্ষেত্রে, আপনি গিটগুলি স্বয়ংক্রিয়ভাবে মার্জ হয়ে যাওয়ার পরে মার্জ করা ফাইলগুলি গ্রহণ করেন এবং তারপরে তাদের প্রতিশ্রুতিবদ্ধ।
2) কিছু ফাইল রয়েছে যা আপনি মার্জ করতে চান না।
উদাহরণস্বরূপ, আপনি বর্তমান শাখায় সংস্করণ ধরে রাখতে চান এবং যে শাখায় আপনি মার্জ করছেন তাতে সংস্করণটি উপেক্ষা করতে চান।
বর্তমান শাখায় সংস্করণ নির্বাচন করতে, চালান:
git checkout HEAD file1
এটি file1
বর্তমান শাখায় সংস্করণটি পুনরুদ্ধার করবে এবং file1
গিট দ্বারা স্বতঃবৃত্তিকে ওভাররাইট করবে ।
3) আপনি যদি শাখা-এ সংস্করণ চান (এবং সত্যিকারের মার্জ না)।
চালান:
git checkout branchX file1
এটি file1
ইন এর সংস্করণ পুনরুদ্ধার করবে branchX
এবং file1
গিট দ্বারা স্বয়ংক্রিয়ভাবে মার্জ হওয়া ওভাররাইট করবে ।
4) শেষ কেসটি যদি আপনি কেবলমাত্র নির্দিষ্ট মার্জগুলিতে নির্বাচন করতে চান file1
।
এই ক্ষেত্রে, আপনি file1
সরাসরি সংশোধিত সম্পাদনা করতে পারেন, সংস্করণটি আপনি যেটি চান তা আপডেট করুন file1
এবং তারপরে প্রতিশ্রুতিবদ্ধ।
যদি গিট কোনও ফাইল স্বয়ংক্রিয়ভাবে মার্জ করতে না পারে তবে এটি ফাইলটিকে " আনারমিড " হিসাবে প্রতিবেদন করবে এবং একটি অনুলিপি তৈরি করবে যেখানে আপনাকে ম্যানুয়ালি দ্বন্দ্বগুলি সমাধান করতে হবে।
একটি উদাহরণের সাথে আরও ব্যাখ্যা করতে, আসুন আমরা বলি যে আপনি মার্জ করতে চান branchX
বর্তমান শাখায় :
git merge --no-ff --no-commit branchX
তারপরে আপনি git status
পরিবর্তিত ফাইলগুলির স্থিতি দেখতে কমান্ডটি চালান ।
উদাহরণ স্বরূপ:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
কোথায় file1
,file2
এবং file3
ফাইলগুলি গিটটি সফলভাবে স্বয়ংক্রিয়ভাবে মার্জ হয়েছে।
এর অর্থ কী এটি যে পরিবর্তন করে master
এবং branchX
যারা তিন ফাইলগুলি সমস্ত জন্য কোনো দ্বন্দ্ব ছাড়া একসঙ্গে সংযুক্ত করা হয়েছে।
আপনি কীভাবে চালনা করে মার্জটি করা হয়েছিল তা পরিদর্শন করতে পারেন git diff --cached
;
git diff --cached file1
git diff --cached file2
git diff --cached file3
যদি আপনি কিছু মার্জটি অযাচিত পান তবে আপনি এটি করতে পারেন
- ফাইলটি সরাসরি সম্পাদনা করুন
- সংরক্ষণ
git commit
আপনি যদি মার্জ করতে চান না file1
না এবং বর্তমান শাখায় সংস্করণ ধরে রাখতে চান
চালান
git checkout HEAD file1
আপনি যদি মার্জ করতে চান না file2
এবং কেবল সংস্করণটি চানbranchX
চালান
git checkout branchX file2
তুমি যদি চাও file3
স্বয়ংক্রিয়ভাবে একত্রী হতে কিছু করবেন না।
গিট ইতিমধ্যে এ পর্যায়ে এটি একীভূত করেছে।
file4
উপরে গিট দ্বারা ব্যর্থ একীকরণ। এর অর্থ উভয় শাখায় পরিবর্তন রয়েছে যা একই লাইনে ঘটে। এখান থেকেই আপনাকে দ্বন্দ্বগুলি ম্যানুয়ালি সমাধান করতে হবে। আপনি যে শাখায় file4
পরিণত হতে চান সেই সংস্করণটির জন্য সরাসরি ফাইল সম্পাদনা করে বা চেকআউট কমান্ডটি চালিয়ে আপনি মার্জটি বাতিল করতে পারেন ।
শেষ পর্যন্ত, ভুলবেন না git commit
।