الطريقة المثالية للإستخدام Git في مشروعك (Git Flow)
مرحبا بكم في موضوع جديد لـ Git ،هذا الموضوع راح يكون جداً مفيد لجميع المطورين في مشاريعهم الحالية والمستقبلية ،وسواء كانوا يعملوا بشكل منفرد او مع فريق.
أنصح قبل قراءة هذا الموضوع بقراءة موضوعي السابق
كيف تتجاهل الملفات في مشروعك البرمجي عند استخدامك Git ؟
على أي حال جميع المطورين يعتمدوا على Git في مشاريعهم البرمجية ، ولكن كل مطور او فريق من المطورين يعتمدوا على نهج مختلف عن الاخر حتى عام 2010 عندما كتب مطور رهيب اسمه Vincent Driessen عن تجربته في مشاريعه الخاصة وايضا في مشاريع عمله ومن تجربته لمدة سنة لاحظ بأنها طريقة جداً ناجحه ، فيما بعد سميت بـ Git Flow
أنصح قبل قراءة هذا الموضوع بقراءة موضوعي السابق
كيف تتجاهل الملفات في مشروعك البرمجي عند استخدامك Git ؟
على أي حال جميع المطورين يعتمدوا على Git في مشاريعهم البرمجية ، ولكن كل مطور او فريق من المطورين يعتمدوا على نهج مختلف عن الاخر حتى عام 2010 عندما كتب مطور رهيب اسمه Vincent Driessen عن تجربته في مشاريعه الخاصة وايضا في مشاريع عمله ومن تجربته لمدة سنة لاحظ بأنها طريقة جداً ناجحه ، فيما بعد سميت بـ Git Flow
ماهي طريقة Git Flow ؟
بداية لتوضيح الأمور الـ Git Flow عباره عن Branching Model بمعنى انها عباره عن استراتجية او طريقة ،تساعدك عند اتباعها على تجنب الكثير من المشاكل التي قد تواجها في مشروعك وتعاملك مع Git.
فكرتها هي :
فكرتها هي :
البداية
سوف تملك في المشروع 2 من الـ Branch واحد يدعى master والاخر develop . والذين يعتبروا اساس طريقة الـ Git Flow
بداية مشروعك راح تعمل Branch جديد من الـ master تسميه develop ومن الان كل شغلك راح يكون على develop ! ، الـ master عباره عن نسخة الـ Production للمشروع ، بمعنى فقط يحتوي على النسخه المستقرة من المشروع وبما يعني ايضا بانه لن تعمل Merge للـ master الا في حالات معينه فقط !
بداية مشروعك راح تعمل Branch جديد من الـ master تسميه develop ومن الان كل شغلك راح يكون على develop ! ، الـ master عباره عن نسخة الـ Production للمشروع ، بمعنى فقط يحتوي على النسخه المستقرة من المشروع وبما يعني ايضا بانه لن تعمل Merge للـ master الا في حالات معينه فقط !
Features branches
في كل مره تريد اضافة ميزة جديدة او حتى تصلح Bugs يحتاج له وقت لحله راح تسوي Branch جديد لكل ميزة (feature) ، وضروري تنتبه بأنه يؤخد من الـ develop وليس من الـ master !
ما الفكرة هنا ؟
كل ميزة راح يكون لها Branch مستقل ، وبالتالي جميع الفريق سوف يركز على تطوير المميزات بشكل مستقل وايضا يستطيع مطورين او أكثر التعاون فيما بينهم لتطوير الميزة ، فالفائده هنا عمل الفريق كامل بشكل متزامن وايضا متعاون فيما بينهم .
ما الفكرة هنا ؟
كل ميزة راح يكون لها Branch مستقل ، وبالتالي جميع الفريق سوف يركز على تطوير المميزات بشكل مستقل وايضا يستطيع مطورين او أكثر التعاون فيما بينهم لتطوير الميزة ، فالفائده هنا عمل الفريق كامل بشكل متزامن وايضا متعاون فيما بينهم .
لاحظ في هذه الصورة عندنا ميزتين ، الميزة الاولى انتهى تطويرها واختبارها بعد الانتهاء منها تم دمجها (merge) مع الـ develop وايضا سيتم حذف الـ Branch لانه لن يكون له فائده بعد الـ merge ، ومن ثم فعلنا نفس الامر مع الميزة الاخرى عندما انتيهنا منها تم دمجها مع الـ develop
Release branches
بعد
اضافة عدة مميزات سوف تقرر بأنه حان الوقت لاطلاق نسخة جديدة لمشروعك سواء
لمتجر التطبيقات اذا كان تطبيق او ترفعه على السيرفر اذا كان موقع، هنا
راح تسوي Branch جديد اسمه release-رقم النسخة
ما الفائده من هذا الـ Branch ؟ في هذا الـ Branch النسخه تكون جاهزة للاطلاق ، فهنا يتم اختبارها سوا من قبل المستخدمين كمثال اطلاق نسخة للتطبيق في Testflight او من الفريق الـQA بعد عمل هذا الـ Branch تتوقف اضافة مميزات جديدة لهذه النسخه وفقط يتم حل الـ Bugs المكتشف اثناء تجربة المشروع من قبل الـ Testers.
لكن يمكن الاستمرار في تطوير مميزات جديدة للنسخه التالية من خلال feature branch ، فهذا المغزى من الـ Git Flow المشروع يستمر في التطوير بشكل متزامن
ما الفائده من هذا الـ Branch ؟ في هذا الـ Branch النسخه تكون جاهزة للاطلاق ، فهنا يتم اختبارها سوا من قبل المستخدمين كمثال اطلاق نسخة للتطبيق في Testflight او من الفريق الـQA بعد عمل هذا الـ Branch تتوقف اضافة مميزات جديدة لهذه النسخه وفقط يتم حل الـ Bugs المكتشف اثناء تجربة المشروع من قبل الـ Testers.
لكن يمكن الاستمرار في تطوير مميزات جديدة للنسخه التالية من خلال feature branch ، فهذا المغزى من الـ Git Flow المشروع يستمر في التطوير بشكل متزامن
الان وصلت لمرحلة مستقرة للنسخة وحان وقت اطلاقها للمتجر او الموقع ، الذي سوف تقوم به هو دمجها اولاً مع الـ master وايضا اعطائها Tag برقم النسخه
ومن ثم دمجها مع الـ develop واخيرا يتم حذف Branch الـ release لعدم الحاجة له.
تذكر في بداية الموضوع ذكرت بأنه هناك حالات معينه فقط سوف تدمج الـBranch مع الـ master وايضا ذكرت بأن الـ master هو الذي يحتوي على نسخ الـ Production وهنا ذكرت بأنه يجب اضافة Tag برقم النسخة ، الـ Tag راح يفيدك مستقبلاً ، مثلا اطلقت نسخه واكتشفت وجود مشكلة كبيرة اضطريت تسحب النسخه ، فهنا تستطيع العودة للنسخه المستقرة اعتمادا على الـ Tag، ايضا في حال اكتشفت وجود bug يحتاج الى إصلاح بشكل عاجل ايضا راح يفدك الـ Tag
ومن ثم دمجها مع الـ develop واخيرا يتم حذف Branch الـ release لعدم الحاجة له.
تذكر في بداية الموضوع ذكرت بأنه هناك حالات معينه فقط سوف تدمج الـBranch مع الـ master وايضا ذكرت بأن الـ master هو الذي يحتوي على نسخ الـ Production وهنا ذكرت بأنه يجب اضافة Tag برقم النسخة ، الـ Tag راح يفيدك مستقبلاً ، مثلا اطلقت نسخه واكتشفت وجود مشكلة كبيرة اضطريت تسحب النسخه ، فهنا تستطيع العودة للنسخه المستقرة اعتمادا على الـ Tag، ايضا في حال اكتشفت وجود bug يحتاج الى إصلاح بشكل عاجل ايضا راح يفدك الـ Tag
Hotfix branches
افترض اطلقت نسخه للتطبيق او الموقع وبعد اطلاقه اكتشفت انه في Bug
وهذا الـ Bug يتوجب عليك اصلاحه بشكل عاجل ولا يتحمل التأخير الى النسخة الاخرى ، وفي نفس الوقت المطورين مستمرين في تطوير مميزات جديدة لاطلاقها في النسخه الاخرى وتم دمج بعضها في الـ develop بما يعني Branch الـdevelop ماهو مستقر فهنا الحالة الوحيدة التي سوف تعمل Branch جديد للـ hotfix من الـ master !
وايضا مثل الـ release سوف يحتوي على Tag برقم النسخة ومن ثم تقوم بحل الـBug وعند الانتهاء منه تقوم بدمج الـ hotfix مع الـ master وايضا الـdevelop اخيراً يتم حذف Branch الـ hotfix لعدم الحاجة له
وهذا الـ Bug يتوجب عليك اصلاحه بشكل عاجل ولا يتحمل التأخير الى النسخة الاخرى ، وفي نفس الوقت المطورين مستمرين في تطوير مميزات جديدة لاطلاقها في النسخه الاخرى وتم دمج بعضها في الـ develop بما يعني Branch الـdevelop ماهو مستقر فهنا الحالة الوحيدة التي سوف تعمل Branch جديد للـ hotfix من الـ master !
وايضا مثل الـ release سوف يحتوي على Tag برقم النسخة ومن ثم تقوم بحل الـBug وعند الانتهاء منه تقوم بدمج الـ hotfix مع الـ master وايضا الـdevelop اخيراً يتم حذف Branch الـ hotfix لعدم الحاجة له
كذا نكون انتهينا من شرح طريقة الـGit Flow بشكل نظري. بما انه هناك الكثير من التفاصيل هذه النقاط المهمه التي يجب الانتباه لها :
الـ develop يتم عمله من الـ master
الـ feature يتم عمله من الـ develop
الـ release يتم عمله من الـ develop
عند اكتشاف Bug في نسخة التي تم اطلاقها بشكل رسمي يتم عمل hotfix من الـ master
عند الإنتهاء من الـ feature يتم دمجه مع الـ develop
عند الإنتهاء من الـ release يتم دمجه مع الـ master و الـ develop
عند الإنتهاء من الـ hotfix يتم دمجه مع الـ master و الـ develop
شرح تطبيق طريقة الـ Git Flow في مشروعك
هناك عدة طرق لاستخدامها في مشروعك :
طريقة يدوية عن طريق استخدام اوامر الـ Terminal
طريقة مختصرة عن طريق تثبت أداة git-flow ومن ثم ايضا استخدام اوامر الـ Terminal
طريقة مختصرة وبواجهة رسومية باستخدام برنامج Sourcetree
في هذا الموضوع سوف اشرح الطرق الثلاثه مع اني افضل الـSourcetree
والسبب لتتبع الشرح بالطريقة التي تفضلها وتراها مناسبة لك
والسبب لتتبع الشرح بالطريقة التي تفضلها وتراها مناسبة لك
تثبيت الأدوات المناسبة
بما أنك تقرا هذا الموضوع فبطبيعة الحال مثبت في جهازك الـ Git وتعلم كيف تستخدمه لذلك سوف اتطرق لباقي الادوات
أداة git-flow يمكنك تحميلها بكتابة هذا الامر في نظام الماك
اذا كنت مستخدم لنظام اخر اتبع الشرح في هذه الصفحة
أداة git-flow يمكنك تحميلها بكتابة هذا الامر في نظام الماك
اذا كنت مستخدم لنظام اخر اتبع الشرح في هذه الصفحة
brew install git-flow-avh
برنامج الـSourcetree يمكن تحميله من هنا
نفس البرنامج يحتوي على اداة git-flow مثبته مسبقاً فاذا اردت استخدامه لا تحتاج الى تثبيت الاداة السابقة.
تجهيز المشروع
الطريقة اليدوية :
تقوم بإنشاء Branch بإسم develop في جهازك ومن تعمل push لرفعه الى الـ remote repository بكتابة هذه الاوامر
تقوم بإنشاء Branch بإسم develop في جهازك ومن تعمل push لرفعه الى الـ remote repository بكتابة هذه الاوامر
git branch develop
git push -u origin develop
أداة git-flow :
تقوم بكتابة هذا الامر فقط
تقوم بكتابة هذا الامر فقط
git flow init
بشكل تلقائي سوف يقوم بإنشاء Branch الـ develop ايضا سوف تلاحظ بأنه يسألك عن مسميات بقية الـ Branches الافضل تركها كما هيا
git flow init
Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Version tag prefix? []
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
إنشاء الـ Features branch
الطريقة اليدوية :
تأكد بأنك في الـ develop ومن ثم أنشئ الـ feature branch
مع ملاحظة تسمية اسم الميزة بإسم واضح ، هنا من أجل الشرح فقط تم تسميتها بـ feature-branch
تأكد بأنك في الـ develop ومن ثم أنشئ الـ feature branch
مع ملاحظة تسمية اسم الميزة بإسم واضح ، هنا من أجل الشرح فقط تم تسميتها بـ feature-branch
git checkout develop
git checkout -b feature_branch
أداة git-flow :
تقوم بكتابة هذا الامر فقط
تقوم بكتابة هذا الامر فقط
git flow feature start feature_branch
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
بعد انشاء الـ feature استخدم الـ git كما تستخدمه عادةً بمعنى اعمل التعديلات وسوي commit و push حتى تنتهي من الميزة
الانتهاء من الـ Features branch
هنا اريد أن اوضح نقطه معينه، لما تسوي finish feature الي راح يصير كما ذكرنا في الشرح سابقا سوف يتم الدمج مع الـ develop !
ملاحظة مهمه وهيا اعمل pull للـ develop قبل الضغط على finish feature او عمل الـ merge
لجعل النسخه التي في جهازك من الـ develop طبق الاصل مع الـ remote
لجعل النسخه التي في جهازك من الـ develop طبق الاصل مع الـ remote
الامر هنا قد يختلف من فريق الى فريق اخر :
بعض المطورين سوف يتفقوا على أنه أي مطور ينهي تطوير الميزة يقوم بدمجها مع الـ develop بشكل مباشر !
(هذا الامر ايضا سوف تفعله عندما تقوم بتطوير المشروع بشكل منفرد)
بعض المطورين سوف يتفقوا على أنه أي مطور ينهي تطوير الميزة ،يقوم بإرسال Pull request وفقط مطور معين في الفريق سوف تكون من مهامه قبول الدمج من عدمه !
في حال المطورين اتفقوا على السيناريو الاول
الطريقة اليدوية :
تأكد بأنك في الـ develop ومن ثم أعمل Merge للـ feature_branch
أخر خطوة تقوم بحذف Branch الـ feature_branch
تأكد بأنك في الـ develop ومن ثم أعمل Merge للـ feature_branch
أخر خطوة تقوم بحذف Branch الـ feature_branch
git checkout develop
git merge feature_branch
git branch -d feature_branch
أداة git-flow :
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
git flow feature finish feature_branch
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
في حال المطورين اتفقوا على السيناريو الثاني
بعد الانتهاء من تطوير الـfeature لا تقوم بالضغط على Finish Feature او تعمل Merge بدلا من ذلك اعمل فقط push
الطريقة اليدوية :
تأكد بانك على Branch الـ feature التي تريد عمل لها push
ومن ثم نفذ امر الـ push لرفعها الى الـ remote repository
تأكد بانك على Branch الـ feature التي تريد عمل لها push
ومن ثم نفذ امر الـ push لرفعها الى الـ remote repository
git checkout -b feature_branch
git push -u origin feature_branch
أداة git-flow :
تقوم بكتابة هذا الامر فقط
تقوم بكتابة هذا الامر فقط
git flow feature publish feature_branch
برنامج الـSourcetree
بعد عمل الـ Commit فقط اضغط على زر Push
وتستطيع تختصر الامر عند عمل أي Commit تقوم بتفعيل خيار عمل Push بشكل تلقائي كما في الصورة التالية
بعد عمل الـ Commit فقط اضغط على زر Push
وتستطيع تختصر الامر عند عمل أي Commit تقوم بتفعيل خيار عمل Push بشكل تلقائي كما في الصورة التالية
بعد تنفيذ اي طريقة من الطرق السابقة يتبقى فقط عمل الـ pull request
افتح صفحة المشروع سوا في github او gitLab او غيره
سوف تجد بشكل تلقائي خيار لعمل pull request في الصفحة
كما في الصورة التالية :
افتح صفحة المشروع سوا في github او gitLab او غيره
سوف تجد بشكل تلقائي خيار لعمل pull request في الصفحة
كما في الصورة التالية :
توضيح
سبب تسمية الـ Branch بـ feature_branch2 هو لاني قمت سابقا بدمج
الـ feature_branch بإستخدام finsh feature ، فبدلا من استخدام نفس الاسم
قمت بعمل Branch باسم مختلف
عند الضغط على Compare & pull request
تأكد بأن خيار الـ base على develop وايضا تأكد بأن خيار الـ compare على Branch الـ feature التي قمت بالانتهاء منها وليس Branch لـ feature اخر !
تستطيع كتابة معلومات اضافيه هنا اذا اردت إضافتها ! ومن ثم اضغط على create pull request
تستطيع كتابة معلومات اضافيه هنا اذا اردت إضافتها ! ومن ثم اضغط على create pull request
المطور المسؤول يستيطع النقاش معاك في نفس هذه الصفحة وايضا يستيطع إغلاق الـ pull request او يقوم بقبوله وعمل Merge
بعد المواقفة على الـ pull request سيتم الدمج مع الـ develop
وفي هذه الحالة ستكون النسخه الي عندك للـ develop قديمة وغير مطابقة للنسخة في الـ remote وهنا فقط تحتاج تسوي pull لجلب البيانات الجديدة
وفي هذه الحالة ستكون النسخه الي عندك للـ develop قديمة وغير مطابقة للنسخة في الـ remote وهنا فقط تحتاج تسوي pull لجلب البيانات الجديدة
احيانا راح يصير Merge Conflicts بما يعني تعارض في عملية الدمج
عند عمل finish feature ، او بعد عمل pull request وثم قبول الـ merge
كما شرحت سابقاً ، فهنا فقط حل التعارض واعمل push للتغيرات
عند عمل finish feature ، او بعد عمل pull request وثم قبول الـ merge
كما شرحت سابقاً ، فهنا فقط حل التعارض واعمل push للتغيرات
في أغلب الأحيان سوف تواجهه الـ Merge Conflicts والذي تعني تعارض ،السبب بإختصار بأن هناك إختلاف بين النسخ
من تجربتي أفضل طريقة لحل التعارض هو فتح الملفات التي تحتوي على التعارض في برنامج Visual Studio Code
ومن البرنامج سوف يوضحلك الاسطر في الكود التي سببت التعارض وسوف يخيرك اي سطر تريد إبقاءها هل تريد إبقاء أسطر النسخه القديمة او الجديدة.
من تجربتي أفضل طريقة لحل التعارض هو فتح الملفات التي تحتوي على التعارض في برنامج Visual Studio Code
ومن البرنامج سوف يوضحلك الاسطر في الكود التي سببت التعارض وسوف يخيرك اي سطر تريد إبقاءها هل تريد إبقاء أسطر النسخه القديمة او الجديدة.
إنشاء الـ Release branch
بعد اضافة عدة مميزات للنسخه التالية من المشروع ، سوف يحين وقت اختبار النسخه النهائية قبل الاطلاق ، فهنا سوف تقوم بإنشاء الـRelease branch
كما ذكرنا سابقا في الشرح عند الوصول لهذه النقطة سوف تتوقف من اضافة مميزات جديدة للمشروع للنسخه التالية ! لكن تستطيع الاستمرار في تطوير مميزات جديدة للنسخه ما بعد التالية .
بما يعني Branch الـ release يكون فقط لاصلاح الـ Bugs الذي قد يظهر من استخدام النسخه من قبل المختبرين الـ Testers
طريقة إنشاء الـ release مشابة لإنشاء الـ feature
كما ذكرنا سابقا في الشرح عند الوصول لهذه النقطة سوف تتوقف من اضافة مميزات جديدة للمشروع للنسخه التالية ! لكن تستطيع الاستمرار في تطوير مميزات جديدة للنسخه ما بعد التالية .
بما يعني Branch الـ release يكون فقط لاصلاح الـ Bugs الذي قد يظهر من استخدام النسخه من قبل المختبرين الـ Testers
طريقة إنشاء الـ release مشابة لإنشاء الـ feature
الطريقة اليدوية :
تأكد بانك على Branch الـ devlop من ثم أنشئ الـ release branch
مع ملاحظة اضافة رقم للنسخة يكون مطابق لرقم نسخة التطبيق
تأكد بانك على Branch الـ devlop من ثم أنشئ الـ release branch
مع ملاحظة اضافة رقم للنسخة يكون مطابق لرقم نسخة التطبيق
git checkout develop
git checkout -b release/1.0
أداة git-flow :
تقوم بكتابة هذا الامر فقط
تقوم بكتابة هذا الامر فقط
git flow release start 1.0
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
الانتهاء من الـ Release branch
الامر هنا مشابه للـ feature واعتمادا على الاتفاق مع بقية مطورين الفريق
اما سوف يتفقوا على السيناريو الاول كما سوف اقوم بالشرح هنا او سوف يتفقوا على السيناريو الثاني . في حال اتفقوا على السيناريو الثاني فيجب الملاحظه بأنه هناك فرق عن الـ feature وهو بعد عمل merge مع الـ develop سوف تقوم ايضا بعمل merge للـ develop مع الـ master
اما سوف يتفقوا على السيناريو الاول كما سوف اقوم بالشرح هنا او سوف يتفقوا على السيناريو الثاني . في حال اتفقوا على السيناريو الثاني فيجب الملاحظه بأنه هناك فرق عن الـ feature وهو بعد عمل merge مع الـ develop سوف تقوم ايضا بعمل merge للـ develop مع الـ master
ملاحظة مهمه وهيا اعمل pull للـ develop وايضا للـ master قبل الضغط على finish release او عمل الـ merge
لجعل النسخه التي في جهازك من الـ develop و master طبق الاصل مع الـ remote
لجعل النسخه التي في جهازك من الـ develop و master طبق الاصل مع الـ remote
الطريقة اليدوية :
تأكد بانك على Branch الـ master من ثم تقوم بعمل merge للـ release branch مع الـ master
تأكد بانك على Branch الـ master من ثم تقوم بعمل merge للـ release branch مع الـ master
git checkout master
git merge release/1.0
ومن ثم سوف تقوم ايضا بدمج الـ release مع الـ develop ، اخر خطوة تقوم بحذف الـ release
git checkout develop
git merge release/1.0
git branch -D release/1.0
أداة git-flow :
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
git flow release finish '1.0'
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
بعد عمل الـ merge لا تنسى تعمل push لرفعها الى الـ remote
إنشاء الـ Hotfix branch
كما ذكرت في الشرح سابقاً ، الـ hotfix branch تكون للحالات الحرجة فقط وفكرتها انه تحل Bug حرج ظهر بعد اطلاق النسخة بشكل رسمي. لذلك من النادر استخدام الـ hotfix
وتذكر Branch الـ hotfix ينعمل من الـ master وهو الـ Branch الوحيد الذي يتم انشائه من الـ master
وتذكر Branch الـ hotfix ينعمل من الـ master وهو الـ Branch الوحيد الذي يتم انشائه من الـ master
الطريقة اليدوية :
تأكد بانك على Branch الـ master من ثم أنشئ الـ hotfix branch
تذكر الـ hotfix مشابه للـ release والسبب لأنك سوف تقوم بحل Bug بشكل عاجل ومن ثم سوف تقوم بإطلاق النسخه بشكل عاجل . لذلك سوف تعطي رقم جديد للنسخة !
وغالبا في تسمية النسخ :
الرقم الاول 1.0 يكون للنسخه الجديدة بميزات وتغيرات كبيرة
الرقم الثاني 1.0 يتغير اذا اطلقت نسخه جديدة باضافة مميزات الجديدة
الرقم الثالث 1.0.1 يتغير عند حل Bug في الغالب
لذلك سوف نقوم بتسمية نسخة الـ hotfix بـ 1.0.1
تأكد بانك على Branch الـ master من ثم أنشئ الـ hotfix branch
تذكر الـ hotfix مشابه للـ release والسبب لأنك سوف تقوم بحل Bug بشكل عاجل ومن ثم سوف تقوم بإطلاق النسخه بشكل عاجل . لذلك سوف تعطي رقم جديد للنسخة !
وغالبا في تسمية النسخ :
الرقم الاول 1.0 يكون للنسخه الجديدة بميزات وتغيرات كبيرة
الرقم الثاني 1.0 يتغير اذا اطلقت نسخه جديدة باضافة مميزات الجديدة
الرقم الثالث 1.0.1 يتغير عند حل Bug في الغالب
لذلك سوف نقوم بتسمية نسخة الـ hotfix بـ 1.0.1
git checkout master
git checkout -b hotfix/1.0.1
أداة git-flow :
تقوم بكتابة هذا الامر فقط
تقوم بكتابة هذا الامر فقط
git flow hotfix start 1.0.1
برنامج الـSourcetree
اتبع الصور التالية :
اتبع الصور التالية :
الانتهاء من الـ Hotfix branch
ملاحظة مهمه وهيا اعمل pull للـ develop وايضا للـ master قبل الضغط على finish hotfix او عمل الـ merge
لجعل النسخه التي في جهازك من الـ develop و master طبق الاصل مع الـ remote
لجعل النسخه التي في جهازك من الـ develop و master طبق الاصل مع الـ remote
الطريقة اليدوية :
تأكد بانك على Branch الـ master من ثم تقوم بعمل merge للـ hotfix branch مع الـ master
تأكد بانك على Branch الـ master من ثم تقوم بعمل merge للـ hotfix branch مع الـ master
git checkout master
git merge hotfix/1.0.1
ومن ثم سوف تقوم ايضا بدمج الـ hotfix مع الـ develop ، اخر خطوة تقوم بحذف الـ hotfix
git checkout develop
git merge hotfix/1.0.1
git branch -D hotfix/1.0.1
أداة git-flow :
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
تقوم بكتابة هذا الامر فقط ،تلقائيا سوف يقوم بكل ما سبق في الطريقة اليدوية!
git flow hotfix finish '1.0.1'
برنامج الـSourcetree
اتبع الصور التالية :
بكذا نكون انتيهنا من الموضوع وشرح طريقة الـ Git Flowاتبع الصور التالية :
صحيح هذه الطريقة تحتوي على كثير من التفاصيل ولكنها جداً مفيدة عند تطوير مشروعك على المدى البعيد سوف تلاحظ اهميتها !
تعليقات
إرسال تعليق