مكونات تدفق GitHub
في هذه الوحدة، نراجع المكونات التالية لتدفق GitHub:
- الفروع
- عمليات التثبيت
- طلبات السحب
- تدفق GitHub
- تدفق Git
مكونات GitHub Flow
قبل أن ندخل في مهام سير العمل الخاصة ب GitHub ، من المفيد أن نفهم أن GitHub Flow يعتمد مباشرة على المفاهيم الأساسية ل Git.
يوفر Git أدوات لتتبع وإدارة التغييرات في التعليمات البرمجية الخاصة بك بمرور الوقت. يعتمد GitHub على ذلك من خلال تسهيل استخدام هذه الأدوات مع ميزات مثل الفروع والالتزامات وطلبات السحب والواجهات المرئية للتعاون. لنبدأ بالنظر في كيفية عمل هذه المفاهيم في GitHub.
ما هي الفروع
في القسم الأخير ، أنشأنا ملفا جديدا وفرعا جديدا في مستودعك.
تعد الفروع جزءا أساسيا من تجربة GitHub. إنها تتيح لك إجراء تغييرات دون التأثير على الفرع الافتراضي.
فرعك هو مكان آمن لتجربة الميزات أو الإصلاحات الجديدة. إذا ارتكبت خطأ، يمكنك إرجاع التغييرات أو دفع المزيد من التغييرات لإصلاح الخطأ. لن يتم تحديث التغييرات على الفرع الافتراضي حتى تقوم بدمج الفرع الخاص بك.
إشعار
بدلا من ذلك، يمكنك إنشاء فرع جديد والتحقق منه باستخدام git في محطة طرفية. سيكون الأمر git checkout -b newBranchName
ما هي عمليات التثبيت
في الوحدة السابقة، أضفت ملفا جديدا إلى المستودع عن طريق دفع تثبيت. دعونا نراجع بإيجاز ما هي الالتزامات.
التثبيت هو تغيير إلى ملف واحد أو أكثر على الإصدار الفرعي. يتم تتبع كل التزام بواسطة معرف فريد وطابع زمني ومساهم، بغض النظر عما إذا كان تم إنشاؤه عبر سطر الأوامر أو مباشرة في واجهة الويب الخاصة ب GitHub. توفر عمليات التثبيت سجل تدقيق واضحا لأي شخص يراجع محفوظات ملف أو عنصر مرتبط، مثل مشكلة أو طلب سحب.
يمكنك إنشاء التزام باستخدام Git في المحطة الطرفية الخاصة بك باستخدام:
git commit -m "Add a helpful commit message"
داخل مستودع git، يمكن أن يوجد ملف في العديد من الحالات الصالحة أثناء مروره بعملية التحكم في الإصدار. الحالات الأساسية لملف في مستودع Git غير متعقبة ومتعقبة.
غير متعقب: حالة أولية لملف عندما لا يكون جزءا من مستودع Git بعد. Git غير مدرك لوجوده.
تعقب: الملف المتعقب هو الملف الذي يراقبه Git بنشاط. يمكن أن يكون في إحدى الحالات الفرعية التالية:
- غير معدل: يتم تعقب الملف، ولكن لم يتم تعديله منذ التثبيت الأخير.
- تاريخ التعديل: تم تغيير الملف منذ التثبيت الأخير، ولكن لم يتم بعد تنظيم هذه التغييرات للتثبيت التالي.
- مرحلي: تم تعديل الملف، وتمت إضافة التغييرات إلى منطقة التقسيم المرحلي (المعروفة أيضا باسم الفهرس). هذه التغييرات جاهزة للتزمت.
- الالتزام: الملف موجود في قاعدة بيانات المستودع. يمثل أحدث إصدار مثبت من الملف.
تساعد هذه الحالات فريقك على فهم حالة كل ملف ومكانه في عملية التحكم في الإصدار.
ما طلبات السحب؟
طلب السحب هو الآلية المستخدمة للإشارة إلى أن عمليات التثبيت من إصدار فرعي واحد جاهز ليتم دمجه في إصدار فرعي آخر.
يطلب عضو الفريق الذي يرسل طلب السحب من مراجع واحد أو أكثر التحقق من التعليمات البرمجية والموافقة على الدمج. هؤلاء المراجعين لديهم الفرصة للتعليق على التغييرات أو إضافة التغييرات الخاصة بهم أو استخدام طلب السحب نفسه لمزيد من المناقشة.
يدعم GitHub أيضا مسودة طلبات السحب، والتي تتيح لك فتح طلب سحب غير جاهز بعد للمراجعة.
بمجرد الموافقة على التغييرات (إذا لزم الأمر)، يتم دمج فرع مصدر طلب السحب (فرع المقارنة) في الفرع الأساسي.
الآن بعد أن رأيت كيفية عمل طلبات الفروع والالتزامات والسحب ، دعنا نتعرف على كيفية تجميعها معا في GitHub Flow.
تدفق GitHub
تدفق GitHub هو سير عمل بسيط يساعدك على إجراء التغييرات ومشاركتها بأمان. إنه لأمر رائع لتجربة الأفكار والتعاون مع فريقك باستخدام الفروع وطلبات السحب وعمليات الدمج.
إشعار
يعد تدفق GitHub أحد مهام سير العمل العديدة الشائعة. وتشمل الأخرى تدفق Git والتطوير المستند إلى الجذع.
الآن بعد أن عرفنا أساسيات GitHub يمكننا المرور عبر تدفق GitHub ومكوناته.
- ابدأ بإنشاء فرع حتى لا تؤثر التغييرات أو الميزات أو الإصلاحات على الفرع الرئيسي.
- بعد ذلك ، قم بإجراء التحديثات الخاصة بك في الفرع. إذا كان سير العمل الخاص بك يدعمه، فيمكنك نشر التغييرات من هذا الفرع لاختبارها قبل الدمج.
- الآن ، افتح طلب سحب لدعوة التعليقات وبدء المراجعة.
- بعد ذلك ، راجع التعليقات وقم بإجراء أي تحديثات ضرورية بناء على ملاحظات فريقك.
- أخيرا ، بمجرد أن تكون واثقا من التغييرات التي أجريتها ، احصل على الموافقة وادمج طلب السحب في الفرع الرئيسي.
- بعد ذلك ، احذف الفرع للحفاظ على نظافة المستودع الخاص بك وتجنب استخدام الفروع القديمة.
تدفق Git
في حين أن GitHub Flow هو سير عمل خفيف الوزن مصمم للتسليم المستمر ، فإن Git flow هو نموذج تفرع أكثر تنظيما يستخدم غالبا في البيئات التي تعتمد على الإصدار. كان تدفق Git موجودا لفترة أطول من GitHub Flow، وقد لا تزال ترى المصطلح master المستخدم بدلا من main الفرع الافتراضي.
صورة بواسطة فينسنت دريسن، من 'نموذج تفرع Git الناجح'
أنواع فروع تدفق Git
يستخدم Git flow العديد من الفروع طويلة العمر والمؤقتة:
- رئيسي: يعكس دائما التعليمات البرمجية الجاهزة للإنتاج.
- تطوير: يحتوي على أحدث أعمال التطوير للإصدار التالي.
-
feature/*: تستخدم لإنشاء ميزات جديدة ؛ متفرعة من
developومدمجة مرة أخرى عند الانتهاء. -
release/*: يعد إصدار إنتاج جديد من
develop؛ يسمح بالاختبار النهائي وإصلاحات الأخطاء الطفيفة. -
الإصلاح العاجل /*: يستخدم لتصحيح مشكلات الإنتاج بسرعة ؛ متفرعة من
master.
كيف تعمل عملية تدفق Git
- يقوم المطورون بإنشاء فروع ميزات من
developأجل بناء وظائف جديدة. - عندما يحين وقت الإصدار، يتم إنشاء فرع إصدار من
develop. هذا يعزل أعمال التحضير للإطلاق حتى يستمر التطوير دون انقطاع. - يمكن إضافة إصلاحات الأخطاء إلى فرع الإصدار ، ولكن يجب أن تنتظر الميزات الرئيسية إصدارا مستقبليا.
- بمجرد أن تصبح جاهزا ، يتم دمج فرع الإصدار ووضع
masterعلامة عليه برقم إصدار. يمكن ل GitHub استخدام هذه العلامات لمساعدتك في إنشاء ملاحظات الإصدار. - يجب دمج فرع الإصدار نفسه مرة أخرى لإبقائه
developمتزامنا. - في حالة ظهور خطأ إنتاج حرج ، يتم إنشاء فرع إصلاح عاجل من
master. بمجرد إصلاحه ، يتم دمجه في كلmasterمن وdevelop.
متى تستخدم Git flow
- الأنسب للمشاريع ذات الإصدارات المجدولة أو ذات الإصدار
- مفيد إذا كنت تحتفظ بإصدارات إنتاج متعددة (على سبيل المثال ، فروع الدعم طويلة الأجل)
- مثالية لدورات التطوير البطيئة والأكثر تنظيما (على سبيل المثال، البيئات المؤسسية أو المنظمة)
- يعتبر "ثقيلا الوزن" أكثر من GitHub Flow بسبب إدارة الفروع الإضافية
إشعار
يفترض Git flow التزامات دمج لدمج الفروع. يمكن أن يتداخل استخدام عمليات دمج إعادة التأسيس أو الاسكواش مع بنية الفرع وتتبع التاريخ.
بالنسبة للعديد من الفرق التي تستخدم GitHub ، يكون GitHub Flow أبسط وأسرع. ولكن إذا كان فريقك يقدر القدرة على التنبؤ ويحتاج إلى مزيد من تخطيط الإصدار ، فقد يكون تدفق Git مناسبا بشكل أفضل.
تهَانينَا! لقد مررت للتو عبر GitHub Flow الكامل - واستكشفت كيف يقدم Git flow بديلا منظما للمشاريع المستندة إلى الإصدار.
دعونا ننتقل إلى القسم التالي حيث سنغطي الاختلافات بين المشكلات والمناقشات.