كيفية استخدام فروع Git

0 الأسهم
0
0
0
0

مقدمة

هذه المقالة هي الثالثة في سلسلة "استخدام Git". يفترض أنك قرأتَ مقالة التثبيت ومقالة "كيفية استخدام Git بفعالية".

في عالم أنظمة التحكم في الإصدارات، يُعد GIT بلا شك أحد أفضل الأنظمة من حيث المرونة. من السهل جدًا تعلم قواعد اللغة وفهم كيفية استخدام GIT على النحو الأمثل لسير عملك وبيئتك.

سيعلمك هذا البرنامج التعليمي كيفية إنشاء فرعين (الرئيسي والتطوير) وكيفية دمج الكود من التطوير إلى الإنتاج.

الفرع، في جوهره، هو سلسلة فريدة من تغييرات الكود باسم فريد. يمكن أن يحتوي كل مستودع على فرع واحد أو أكثر.

افتراضيًا، يُطلق على الفرع الأول اسم "master".

عرض الفروع

قبل إنشاء فروع جديدة، نريد الاطلاع على جميع الفروع الموجودة. يمكننا الاطلاع على جميع الفروع الموجودة بكتابة ما يلي:

git branch -a

يؤدي إضافة "-a" إلى نهاية الأمر إلى إخبار GIT بأننا نريد رؤية جميع الفروع المتاحة، بما في ذلك تلك التي لا نملكها في مساحة العمل المحلية الخاصة بنا.

سيكون الناتج مشابهًا لما يلي:

* master remotes/origin/master

تشير علامة النجمة بجوار "master" في السطر الأول من المخرجات إلى أننا موجودون حاليًا على هذا الفرع. أما السطر الثاني، فيشير ببساطة إلى وجود فرع واحد على جهازنا البعيد، يُسمى Origin، ويُسمى أيضًا master.

الآن بعد أن أصبحنا نعرف كيفية عرض الفروع، فقد حان الوقت لإنشاء فرعنا الأول.

إنشاء الفروع

كما ذكرنا في بداية هذه المقالة، نريد أن يكون لدينا إعداد تطوير وإنتاج لبيئة الترميز الخاصة بنا.

نريد أن نتعامل مع الفرع "الرئيسي" الافتراضي باعتباره إنتاجنا، ولذا نحتاج إلى إنشاء فرع واحد للتطوير أو مرحلة ما قبل الإنتاج.

لإنشاء فرع جديد يسمى develop، اكتب ما يلي:

git checkout -b develop

بالافتراض أنه ليس لدينا فرع يسمى "التطوير" حتى الآن، فسيكون الناتج كما يلي:

Switched to a new branch 'develop'

في حالة وجود فرع بهذا الاسم موجود بالفعل، يخبرنا GIT بما يلي:

fatal: A branch named 'develop' already exists.

يمكنك التنقل ذهابًا وإيابًا بين فرعيك باستخدام أمر git checkout:

git checkout master

أو

git checkout develop

بافتراض وجود فرع تريد التبديل إليه، فسترى إخراجًا مشابهًا لما يلي:

Switched to branch 'master'

إذا حاولت التبديل إلى فرع غير موجود، مثل

git checkout nosuchbranch

يخبرك Git:

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

الآن وقد أصبح لدينا فروع متعددة، علينا استغلالها على النحو الأمثل. في حالتنا هذه، نستخدم فرع "التطوير" لاختبار تغييراتنا، والفرع الرئيسي لنشرها للعامة.

لإثبات هذه العملية، نحتاج إلى العودة إلى فرع التطوير الخاص بنا:

git checkout develop

إجراء تغييرات على فرع التطوير الخاص بنا

في هذا الفرع، ننشئ ملفًا فارغًا جديدًا باسم "develop". لن يكون موجودًا هناك حتى ندمجه مع الفرع الرئيسي (في الخطوة التالية).

touch develop

تمامًا كما في البرنامج التعليمي السابق، نحتاج إلى إخبار git بأننا نريد تتبع هذا الملف الجديد.

يمكننا إضافة ملف "التطوير" عن طريق كتابة:

git add develop

إن مجموعة الأوامر أعلاه تنشئ ملفًا فارغًا يسمى "develop" وتضيفه إلى GIT.

نحن بحاجة أيضًا إلى تثبيت هذا الملف، والذي سيضيف هذا الملف إلى الفرع الذي نحن فيه حاليًا، وهو "التطوير".

git commit -m "develop file" develop

هذا الملف موجود الآن في فرع التطوير. كما سنكتشف لاحقًا، فهو غير موجود في الفرع الرئيسي.

أولاً، نريد التأكد من أننا في فرع التطوير حاليًا. يمكننا القيام بذلك بكتابة:

git branch

يجب أن يكون الناتج مشابهًا للشكل التالي:

* develop master

لقد فهمنا بالفعل أن النجمة الموجودة بجوار اسم الفرع تشير إلى أننا موجودون حاليًا في هذا الفرع.

يؤدي تشغيل الأمر "ls" إلى إظهار وجود هذين الملفين:

ls

يوضح لنا الناتج أن كلا الملفين لدينا تم العثور عليهما باسمي "file" و"develop" على التوالي:

develop file

دمج الكود بين الفروع

الجزء المثير للاهتمام يحدث بعد أن نعود إلى فرعنا الأصلي، والذي يمكننا القيام به باستخدام أمر git checkout:

git checkout master

للتأكد من أننا في الفرع الرئيسي، يمكننا كتابة ما يلي:

git branch

يخبرنا الإخراج عن الفرع الذي نحن فيه، والذي يتم الإشارة إليه بواسطة علامة النجمة.

develop * master

عند تشغيل "ls" مرة أخرى، يبدو أن الملف الجديد مفقود.

file

لم يتم فقدانه - فهو موجود في فرع التطوير الخاص بنا ونحن في فرعنا الرئيسي.

في سيناريونا، يُمثل هذا الملف أي تغييرات على أي ملف (أو ملف جديد تمامًا) اجتاز جميع اختبارات فرع التطوير وأصبح جاهزًا للإنتاج. تُعرف عملية نقل الشيفرة البرمجية بين الفروع (غالبًا من التطوير إلى الإنتاج) بالدمج.

من المهم أن نتذكر عند الدمج أننا نريد أن نكون على الفرع الذي نريد الدمج فيه.

في هذه الحالة، نريد الدمج من فرع التطوير الخاص بنا، حيث يوجد ملف "التطوير"، إلى فرعنا الرئيسي.

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

أحد الخيارات التي يُمكننا تمريرها إلى أمر الدمج، "-no-ff"، يعني أننا نريد من git الاحتفاظ بجميع رسائل الالتزام قبل الدمج. هذا يُسهّل تتبّع التغييرات مُستقبلًا.

لدمج التغييرات من فرع التطوير في الفرع الرئيسي، اكتب ما يلي:

git merge develop --no-ff

سيكون إخراج الأمر مشابهًا لما يلي:

Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop

يؤكد تشغيل الأمر ls مرة أخرى أن ملف "develop" الخاص بنا موجود الآن في فرعنا الرئيسي.

develop file

الشيء الأخير الذي يتعين علينا القيام به الآن، لإجراء هذا التغيير على الخادم البعيد، هو دفع التغييرات، والذي يمكننا القيام به بمساعدة الأمر git push.

git push

ستشاهد إخراجًا مشابهًا لما يلي، يؤكد أنك قمت بالدمج من فرع التطوير الخاص بك إلى الفرع الرئيسي على الخادم البعيد الخاص بك:

Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://[email protected]/repository 9af2dcb..53649cf master -> master

نتيجة

باتباع البرنامج التعليمي أعلاه، ستحصل على سير عمل ثنائي الفروع، ونأمل أن يكون لديك فهم جيد لكيفية عمل التفرع في GIT. شاركنا رأيك في التعليقات!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً