গিট মার্জ –no-ff বিকল্প

Git Merge No Ff Option



গিটের সহজ মার্জ ক্ষমতা তার অন্যতম শক্তি। একত্রীকরণের সময়, গিট ফাস্ট-ফরওয়ার্ড মার্জ ব্যবহার করে যখন এটি লক্ষ্য করে যে বর্তমান শাখার প্রধানটি যে অঙ্গীকারটি আপনি একত্রিত করার চেষ্টা করছেন তার পূর্বপুরুষ। ফাস্ট-ফরওয়ার্ড মার্জে, কোনও নতুন প্রতিশ্রুতি নেই। গিট শুধু পয়েন্টার সরায়। যদি এই আচরণটি কাম্য না হয়, তাহলে আপনি একত্রীকরণের জন্য একটি নতুন প্রতিশ্রুতি তৈরি করতে no-ff পতাকা ব্যবহার করতে পারেন।

মার্জ ফাস্ট-ফরওয়ার্ডের সাথে এবং ছাড়া কীভাবে দেখায়

দ্রুত এগিয়ে যাওয়ার পরে, আপনার গিট ইতিহাস এইরকম দেখাবে:







C0 -> C1 -> C2—> C3



একই সংখ্যক প্রতিশ্রুতির জন্য, এখানে দ্রুত-ফরওয়ার্ড ছাড়াই একত্রীকরণের ইতিহাস রয়েছে:







প্রথম ক্ষেত্রে, কোন ইঙ্গিত নেই যে কোন শাখা ছিল। দ্বিতীয় ক্ষেত্রে, ইতিহাসটি একটি C4 প্রতিশ্রুতি দেখাচ্ছে যেখানে একত্রীকরণ ঘটেছে তা নির্দেশ করে।

একটি উদাহরণের মাধ্যমে হাঁটা

আপনি একটি গিট রিপোজিটরি তৈরি করবেন, একটি শাখা তৈরি করবেন এবং তারপর দ্রুত-ফরোয়ার্ড সহ এবং ছাড়া মার্জ করার চেষ্টা করবেন।



বিভাগ 1: সেটআপ

প্রথমে, আপনি নিম্নলিখিত ধাপগুলি দিয়ে গিট রিপোজিটরি তৈরি করতে পারেন:

$ mkdir my_project
$ cd my_project
$ git init
$ touch a.txt
$ git add -A
$ git commit -m 'C0: a.txt যোগ করা'

এখন আসুন বৈশিষ্ট্য নামে একটি শাখা তৈরি করি এবং কয়েকটি পরিবর্তন করি:

$ git শাখার বৈশিষ্ট্য
$ git চেকআউট বৈশিষ্ট্য
$ touch b.txt
$ git add -A
$ git commit -m 'C1: b.txt যোগ করা'
$ স্পর্শ c.txt
$ git add -A
$ git commit -m 'C2: c.txt যোগ করা'
$ touch d.txt
$ git add -A
$ git commit -m 'C3: d.txt যোগ করা'

বিভাগ 2: ফাস্ট-ফরওয়ার্ডিংয়ের সাথে মার্জ করুন

আসুন মাস্টার শাখায় ফিরে যাই এবং এতে বৈশিষ্ট্য শাখা একত্রিত করি:

$git চেকআউটমাস্টার
$গিট মার্জবৈশিষ্ট্য

আউটপুট:

08076fb..9ee88eb আপডেট করা হচ্ছে
দ্রুত অগ্রগামী
b.txt | 0
c.txt | 0
d.txt | 0
3 টি ফাইল পরিবর্তন, 0 সন্নিবেশ (+), 0 মুছে ফেলা (-)
100644 b.txt মোড তৈরি করুন
মোড 100644 c.txt তৈরি করুন
মোড 100644 d.txt তৈরি করুন

আপনি যদি ইতিহাস পরীক্ষা করেন, আপনি দেখতে পাবেন:

$ git log --oneline
9ee88eb C3: d.txt যোগ করা হচ্ছে
c72b92c C2: c.txt যোগ করা হচ্ছে
2e4039e C1: b.txt যোগ করা হচ্ছে
08076fb C0: a.txt যোগ করা হচ্ছে

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

বিভাগ 3: ফাস্ট-ফরওয়ার্ডিং ছাড়া

একটি নতুন ফোল্ডারের জন্য বিভাগ 1 পুনরাবৃত্তি করুন।

তারপর, দ্রুত-ফরওয়ার্ডিং ছাড়া একটি মার্জ করার চেষ্টা করুন:

$git চেকআউটমাস্টার
$গিট মার্জ --no-ffবৈশিষ্ট্য

এটি আপনার গিটের ডিফল্ট টেক্সট এডিটরে নিম্নলিখিতটি খুলবে:

শাখা মার্জ করুন'বৈশিষ্ট্য'
# কেন এই একত্রীকরণ প্রয়োজন তা ব্যাখ্যা করতে দয়া করে একটি প্রতিশ্রুতি বার্তা লিখুন,
# বিশেষত যদি এটি একটি আপডেট হওয়া আপস্ট্রিমকে একটি টপিক শাখায় একীভূত করে।
#
# '' দিয়ে শুরু হওয়া লাইনগুলি উপেক্ষা করা হবে এবং একটি খালি বার্তা বন্ধ হয়ে যাবে
# অঙ্গীকার।

মন্তব্য সংশোধন করুন। এই ক্ষেত্রে, আপনি কেবল C4 যোগ করতে পারেন: মার্জ শাখার 'বৈশিষ্ট্য' এর আগে। আউটপুট এই মত হওয়া উচিত:

'পুনরাবৃত্তিমূলক' কৌশল দ্বারা তৈরি মার্জ।
b.txt | 0
c.txt | 0
d.txt | 0
3 টি ফাইল পরিবর্তন, 0 সন্নিবেশ (+), 0 মুছে ফেলা (-)
100644 b.txt মোড তৈরি করুন
মোড 100644 c.txt তৈরি করুন
মোড 100644 d.txt তৈরি করুন

এখন যদি আপনি ইতিহাস চেক করেন, তাহলে এটি নিচের মত দেখতে হবে:

$ git log --oneline
e071527 C4: মার্জ শাখা 'বৈশিষ্ট্য'
bb79c25 C3: d.txt যোগ করা হচ্ছে
692bd8c C2: c.txt যোগ করা হচ্ছে
a0df62a C1: b.txt যোগ করা হচ্ছে
7575971 C0: a.txt যোগ করা হচ্ছে

আপনি দেখতে পাচ্ছেন যে যদিও আপনার ঠিক একই পরিবর্তন আছে, মার্জের এই সংস্করণটিতে অতিরিক্ত C4 কমিট রয়েছে যা বৈশিষ্ট্য শাখার মাস্টারে একত্রীকরণকে নির্দেশ করে।

উপসংহার

গিট মার্জ নো-এফএফ পতাকা আরও পাঠযোগ্য ইতিহাস তৈরি করতে সহায়তা করে। এটি আপনাকে এমন ট্যাগ লাগাতে দেয় যা মার্জ হয়েছে কোথায় তা স্পষ্টভাবে দেখায়। এটি ডিবাগ করার সময় আপনার সময় এবং প্রচেষ্টা বাঁচাতে পারে।

আরও অধ্যয়ন:

তথ্যসূত্র: