خيار Git Merge – no-ff

Git Merge No Ff Option



تعد إمكانية الدمج السهلة لـ git إحدى نقاط قوتها. أثناء الدمج ، يستخدم git دمج التقديم السريع عندما يلاحظ أن رأس الفرع الحالي هو أصل الالتزام الذي تحاول دمجه. في الدمج السريع ، لا يوجد التزام جديد. Git فقط يحرك المؤشر. إذا كان هذا السلوك غير مرغوب فيه ، يمكنك استخدام علامة no-ff لإنشاء التزام جديد للدمج.

كيف يبدو الدمج مع التقديم السريع وبدون ذلك

بعد التقديم السريع ، سيبدو سجل git كما يلي:







C0 -> C1 -> C2—> C3



بالنسبة إلى نفس عدد عمليات الارتكاز ، يوجد هنا سجل دمج بدون تقديم سريع:







في الحالة الأولى ، لا يوجد ما يشير إلى وجود أي تفريع. في الحالة الثانية ، يعرض السجل التزام C4 للإشارة إلى مكان حدوث الدمج.

المشي من خلال مثال

ستقوم بإنشاء مستودع git وإنشاء فرع ثم تجربة عمليات الدمج مع التقديم السريع وبدون ذلك.



القسم 1: الإعداد

أولاً ، يمكنك إنشاء مستودع git باتباع الخطوات التالية:

$ mkdir my_project
$ cd my_project
مدخل $ git
$ touch a.txt
$ git add -A
$ git الالتزام -m 'C0: إضافة a.txt'

لنقم الآن بإنشاء فرع يسمى الميزات ونقوم ببعض التغييرات:

ميزات فرع git $
ميزات بوابة الخروج $
$ touch b.txt
$ git add -A
$ git الالتزام -m 'C1: إضافة b.txt'
$ touch c.txt
$ git add -A
$ git الالتزام -m 'C2: إضافة c.txt'
$ المس d.txt
$ git add -A
$ git الالتزام -m 'C3: إضافة d.txt'

القسم 2: الدمج مع التقديم السريع

دعنا نعود إلى الفرع الرئيسي ودمج فرع الميزات فيه:

$بوابة الخروجرئيسي - سيد
$دمج بوابةالميزات

انتاج:

تحديث 08076fb..9ee88eb
تقديم سريع
b.txt | 0
c.txt | 0
d.txt | 0
تم تغيير 3 ملفات ، 0 إدراج (+) ، 0 حذف (-)
إنشاء الوضع 100644 b.txt
إنشاء الوضع 100644 c.txt
إنشاء الوضع 100644 d.txt

إذا قمت بفحص السجل ، فسترى:

سجل بوابة $ - Online
9ee88eb C3: إضافة d.txt
c72b92c C2: إضافة ملف c.txt
2e4039e C1: إضافة ملف b.txt
08076fb C0: إضافة ملف a.txt

لذا ، فإن جميع الالتزامات من فرع الميزات موجودة في الفرع الرئيسي الآن. إذا واصلت إجراء تغييرات للإتقان ، فلا توجد طريقة لمعرفة متى تم دمج فرع الميزات فيه.

القسم 3: بدون إعادة التوجيه السريع

كرر القسم 1 لمجلد جديد.

بعد ذلك ، جرب الدمج بدون إعادة التوجيه السريع:

$بوابة الخروجرئيسي - سيد
$دمج بوابة - لا وما يليهاخاصية

سيفتح ما يلي في محرر النصوص الافتراضي الخاص بـ git:

فرع الدمج'الميزات'
# الرجاء إدخال رسالة الالتزام لتوضيح سبب ضرورة هذا الدمج ،
# خاصةً إذا كان يدمج تحديثًا أوليًا محدثًا في فرع موضوع.
#
# سيتم تجاهل السطور التي تبدأ بـ '#' وإلغاء الرسالة الفارغة
# الالتزام.

تعديل التعليقات. في هذه الحالة ، يمكنك فقط إضافة C4: قبل دمج 'ميزات' الفرع. يجب أن يبدو الإخراج كما يلي:

دمج بواسطة إستراتيجية 'العودية'.
b.txt | 0
c.txt | 0
d.txt | 0
تم تغيير 3 ملفات ، 0 إدراج (+) ، 0 حذف (-)
إنشاء الوضع 100644 b.txt
إنشاء الوضع 100644 c.txt
إنشاء الوضع 100644 d.txt

الآن إذا قمت بفحص السجل ، يجب أن يبدو كما يلي:

سجل بوابة $ - Online
e071527 C4: دمج 'ميزات' فرع
bb79c25 C3: إضافة d.txt
692 definitelyc C2: إضافة c.txt
a0df62a C1: إضافة ملف b.txt
7575971 C0: إضافة a.txt

يمكنك أن ترى أنه على الرغم من أن لديك نفس التغييرات بالضبط ، فإن هذا الإصدار من الدمج يحتوي على التزام C4 الإضافي الذي يشير إلى دمج فرع الميزات في الرئيسي.

استنتاج

تساعد علامة git merge no-ff في إنشاء محفوظات أكثر قابلية للقراءة. يسمح لك بوضع العلامات التي توضح مكان حدوث عمليات الدمج. يمكن أن يوفر لك الوقت والجهد أثناء التصحيح.

المزيد من الدراسة:

مراجع: