مقدمة
هذه المقالة هي الثالثة في سلسلة "استخدام 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. شاركنا رأيك في التعليقات!









