تعد إمكانية الدمج السهلة لـ 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
إذا قمت بفحص السجل ، فسترى:
سجل بوابة $ - Online9ee88eb 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
الآن إذا قمت بفحص السجل ، يجب أن يبدو كما يلي:
سجل بوابة $ - Onlinee071527 C4: دمج 'ميزات' فرع
bb79c25 C3: إضافة d.txt
692 definitelyc C2: إضافة c.txt
a0df62a C1: إضافة ملف b.txt
7575971 C0: إضافة a.txt
يمكنك أن ترى أنه على الرغم من أن لديك نفس التغييرات بالضبط ، فإن هذا الإصدار من الدمج يحتوي على التزام C4 الإضافي الذي يشير إلى دمج فرع الميزات في الرئيسي.
استنتاج
تساعد علامة git merge no-ff في إنشاء محفوظات أكثر قابلية للقراءة. يسمح لك بوضع العلامات التي توضح مكان حدوث عمليات الدمج. يمكن أن يوفر لك الوقت والجهد أثناء التصحيح.