بوابة قارن فرعين

Git Compare Two Branches



تحتوي جميع أنظمة التحكم في الإصدارات تقريبًا على خيارات تفريع. لكن Git معروفة بقدراتها على التفرع السريع. فروع Git خفيفة الوزن. لذا فإن عقوبات الأداء على التفرع ضئيلة ويتم تشجيع فرق التطوير على التفرع والدمج قدر الإمكان. ولكن عندما تعمل مع فروع متعددة ، من المهم أن تكون قادرًا على مقارنة الاختلافات والتباين بينها. في هذا البرنامج التعليمي ، سنتعرف على سير عمل لنرى كيف يمكننا مقارنة مختلف الفروع والالتزامات ، فلنقم أولاً بإعداد الموقف التالي:

C00 => C01 => C03 => C06 (رئيسي)









C02 => C04 => C05 (التطوير)



تم اتخاذ الخطوات التالية:





  • C00: تمت إضافة hello_world.py (الفرع الرئيسي)
  • - إنشاء فرع التطوير
  • C01: تم تعديل hello_world.py لإضافة مرحبًا ثانيًا (الفرع الرئيسي)
  • C02: تم تعديل hello_world.py لإضافة فرع تطوير يقول مرحبًا (فرع التطوير)
  • C03: تمت إضافة readme.txt (الفرع الرئيسي)
  • C04: تم التعديل hello_world.py لإضافة فرع التطوير يقول مرحبًا مرة أخرى (فرع التطوير)
  • C05: تم إضافة info.txt (فرع التطوير)
  • C06: تم تعديل readme.txt لإضافة السطر الثاني (الفرع الرئيسي)

بعد كل الالتزامات ، يحتوي الفرع 'الرئيسي' على الملفات التالية:

hello_world.py
readme.txt



وفرع 'التطوير' يحتوي على الملفات التالية:

hello_world.py
info.txt


مقارنة رأسي فرعين

يمكنك استخدام اسم الفروع للمقارنة بين رأسي فرعين:

$بوابة فرقسيد .. التنمية

فرق --يذهبإلى/hello_world.py ب/hello_world.py
الفهرس e27f806..3899ed3100644
-إلى/hello_world.py
+++ ب/hello_world.py
@ @-2و7+2و7 @ @

مواطنه الرئيسية():
مطبعة('مرحبا أولا!')
- مطبعة('مرحبا الثانية!')
-
+ طباعة('فرع التطوير يقول مرحبًا')
+ طباعة('فرع التطوير يقول مرحبًا مرة أخرى')
لو__name__ =='__الأساسية__':
الأساسية()
فرق --يذهبإلى/info.txt ب/info.txt
الجديدملفالوضع100644
الفهرس 0000000..0ab52fd
- /ديف/باطل
+++ ب/info.txt
@ @-0و0+1 @ @
+ معلومات جديدة
فرق --يذهبإلى/readme.txt ب/readme.txt
تم الحذفملفالوضع100644
الفهرس e29c296..0000000
-إلى/readme.txt
+++/ديف/باطل
@ @-1و2+0و0 @ @
-1السطر الأول من readme.txt
-2السطر الثاني من readme.txt

يبحث الأمر diff بشكل متكرر في التغييرات. قامت بتشغيل الفوارق التالية:

فرق –git a / hello_world.py b / hello_world.py
فرق –git a / info.txt b / info.txt
فرق –git a / readme.txt ب / readme.txt

هنا يرمز الحرف 'a' إلى الفرع 'الرئيسي' و 'b' يشير إلى فرع التطوير. يتم دائمًا تخصيص 'a' للمعامل الأول و 'b' للمعامل الثاني. يعني / dev / null أن الفرع لا يحتوي على الملف.


المقارنة بين الالتزامات

في مثالنا ، الفرع 'الرئيسي' لديه الالتزامات التالية:

$حالة بوابة
على رئيس الفرع
لا شيء للالتزام ، دليل العمل نظيف

$سجل بوابة --خط واحد
caa0ddd C06: تم تعديل readme.txt لإضافة السطر الثاني(الفرع الرئيسي)
efaba94 C03: تمت إضافة readme.txt(الفرع الرئيسي)
ee60eac C01: تم تعديل hello_world.py لإضافة مرحبًا ثانيًا(الفرع الرئيسي)
22b4bf9 C00: تمت إضافة hello_world.py(الفرع الرئيسي)

يلتزم فرع التطوير بما يلي:

$حالة بوابة
على تطوير الفرع
لا شيء للالتزام ، دليل العمل نظيف

$سجل بوابة --خط واحد
df3a4ee C05: تمت إضافة info.txt(فرع التنمية)
0f0abb8 C04: تم تعديل hello_world.py لإضافة فرع التطوير يقول مرحبًا مرة أخرى(فرع التنمية)
3f611a0 C02: تم تعديل hello_world.py لإضافة فرع التطوير يقول مرحبًا(فرع التنمية)
22b4bf9 C00: تمت إضافة hello_world.py(الفرع الرئيسي)

افترض أننا نريد مقارنة hello_world.py لالتزامات C01 و C02. يمكنك استخدام التجزئة للمقارنة:

$بوابة فرقee60eac: hello_world.py 3f611a0: hello_world.py

فرق --يذهبإلى/ee60eac: hello_world.py ب/3f611a0: hello_world.py
الفهرس e27f806..72a178d100644
-إلى/ee60eac: hello_world.py
+++ ب/3f611a0: hello_world.py
@ @-2و7+2و7 @ @

مواطنه الرئيسية():
مطبعة('مرحبا أولا!')
- مطبعة('مرحبا الثانية!')
+ طباعة('فرع التطوير يقول مرحبًا')

لو__name__ =='__الأساسية__':
الأساسية()

يمكنك استخدام نفس المبدأ لمقارنة الالتزامات داخل نفس الفرع أيضًا.


أدوات الدمج المرئي

قد يكون النظر إلى المقارنات النصية أمرًا صعبًا. إذا قمت بإعداد Git difftool مع تطبيق دمج مرئي مثل فرق أو بعد المقارنة ، ستتمكن من رؤية الاختلافات بشكل أفضل.

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

مراجع: