الـ branches والـ pull requests¶
الـ pull request صفحة على ليڤانت غيت تطلب فيها مراجعة تعديلات branch ودمجها في branch آخر،
غالبًا main. تنشئ branch مستقلًا، وتعمل عليه، وتنفّذ له push، ثم تفتح pull request فيراه غيرك
ويعلّق على السطور ويعتمده، وبعد الدمج تحذف الـ branch. وهنا أيضًا ماذا تفعل عند أول
merge conflict.
ملاحظة
pull request صفحة على موقع ليڤانت غيت تطلب فيها مراجعة تغييرات branch ودمجها في branch
آخر. أما git pull فأمر تكتبه في الطرفية ليجلب تعديلات الـ remote إلى جهازك. الاسمان
متشابهان والمعنيان مختلفان تمامًا: الأول تفتحه في المتصفّح ويشارك فيه زملاؤك، والثاني ينفّذ
على جهازك وحده ولا يراه أحد. لا يوجد أمر اسمه git pull request.
لماذا الـ branches؟¶
الـ default branch — أي main — يجب أن يبقى صالحًا دائمًا. حين تبدأ ميزة جديدة أو إصلاحًا،
أنشئ branch تعمل عليه بحرّية؛ إن نجح دمجته، وإن فشل حذفته بلا أثر. الـ branches في Git رخيصة
وسريعة، فلا تتردّد في إنشائها.
١. أنشئ branch وانتقل إليه¶
ابدأ من main محدَّثًا:
-c تعني إنشاء branch جديد والانتقال إليه. اختر اسمًا قصيرًا يصف العمل، بحروف لاتينية وبلا مسافات.
٢. اعمل ونفّذ commit على الـ branch¶
الحلقة نفسها من دورة العمل اليومية:
٣. نفّذ push للـ branch إلى ليڤانت غيت¶
أول push للـ branch يحتاج ربطه بالـ remote:
بعدها يكفي git push. ستلاحظ في مخرجات الأمر رابطًا لإنشاء pull request مباشرة.
٤. افتح الـ pull request¶
افتح الـ repository على levantgit.com، وستجد شريطًا أعلى الصفحة يشير إلى الـ branch الذي دفعته
حديثًا مع زر Create Pull Request. أو اذهب إلى تبويب Pull Requests ثم
New Pull Request، واختر الـ branch الهدف (main غالبًا) والـ branch المصدر (branchك).
في النموذج:
- العنوان: جملة تصف التغيير، كما تكتب commit message.
- الوصف: لماذا هذا التغيير؟ كيف يُختبر؟ اذكر رقم الـ issue إن وُجدت، مثل
#12. - Reviewers في العمود الجانبي: اختر من تريد أن يراجع عملك.
ثم اضغط Create Pull Request.
٥. المراجعة¶
يرى المراجع تبويب Files Changed ويستطيع التعليق على أي سطر. قد يختار Approve أو Request Changes. لتلبية الملاحظات، عدّل على جهازك ونفّذ commit ثم push إلى الـ branch نفسه؛ يتحدّث الـ pull request تلقائيًا. النقاش كله يبقى محفوظًا في تبويب Conversation.
٦. الـ merge¶
حين يكتمل الاعتماد، اضغط زر الدمج في أسفل الـ pull request. ستجد عدة خيارات:
- Create Merge Commit: يحتفظ بكل commits الـ branch ويضيف فوقها commit جديدة تسجّل الدمج. الخيار الافتراضي والأبسط.
- Squash and Merge: يضغط commits الـ branch كلها في commit واحدة نظيفة على
main. - Rebase and Merge: يعيد بناء commits الـ branch فوق
mainمباشرة بلا commit دمج.
إن لم تكن متأكدًا، فالخيار الأول يكفي. بعد الدمج اضغط Delete Branch لتبقى قائمة الـ branches نظيفة.
٧. عُد إلى main وحدّثه¶
حلّ merge conflict بسيط¶
يقع الـ merge conflict حين تعدّل أنت وشخص آخر السطر نفسه في الملف نفسه، فلا يعرف Git أيّ النسختين يبقي. ليڤانت غيت سيخبرك أن الـ pull request لا يمكن دمجه تلقائيًا. الحل على جهازك:
سيتوقف Git ويخبرك بأسماء الملفات المتعارضة. افتح الملف وسترى علامات كهذه:
- ما بين
<<<<<<< HEADو=======هو نسختك. - ما بين
=======و>>>>>>> mainهو النسخة القادمة منmain.
احذف العلامات الثلاث واترك النص الذي تريده (أحدهما، أو مزيجًا منهما). ثم:
يعود الـ pull request قابلًا للدمج. ابحث عن علامات <<<<<<< في المشروع كله قبل أن تنفّذ
commit حتى لا ينفلت واحد منها.
نصيحة
كلما كانت الـ branches قصيرة العمر والـ commits صغيرة، قلّت الـ merge conflicts. نفّذ
git pull origin main داخل branchك بين حين وآخر بدل أن تنتظر أسبوعًا.
أسئلة شائعة¶
ما معنى pull request؟¶
هو طلب تقول فيه: راجعوا تعديلات هذا الـ branch وادمجوها في main. تفتحه من موقع ليڤانت غيت لا من
الطرفية، فيرى غيرك الملفات المتغيّرة سطرًا سطرًا، ويعلّق عليها، ثم يعتمدها أو يطلب تعديلات. ويبقى
النقاش كله محفوظًا بعد الدمج. وهذه هي الطريقة المعتادة للعمل الجماعي على مشروع واحد.
ما الفرق بين pull request و git pull؟¶
لا علاقة بينهما رغم تشابه الاسم. الـ pull request صفحة في المتصفّح لمراجعة تعديلات branch ودمجها،
ويشارك فيها زملاؤك. أما git pull فأمر تكتبه في الطرفية ليجلب تعديلات الـ remote إلى جهازك وحده.
ولا يوجد أمر اسمه git pull request.
كيف أفتح pull request على ليڤانت غيت؟¶
نفّذ push للـ branch بأمر git push -u origin اسم-الـ branch، ثم افتح صفحة الـ repository؛ سيظهر
شريط في أعلاها فيه زر Create Pull Request. أو اذهب إلى تبويب Pull Requests ثم
New Pull Request، واختر الـ branch المصدر والهدف، واكتب عنوانًا ووصفًا.
كيف أحلّ merge conflict؟¶
افتح الملف الذي ذكره Git، وابحث فيه عن العلامات <<<<<<< و======= و>>>>>>>. ما بين الأولى
والثانية نسختك، وما بعدها النسخة الأخرى. اترك النص الذي تريده واحذف العلامات الثلاث، ثم نفّذ
git add ثم commit ثم push، فيعود الـ pull request قابلًا للدمج.
ماذا بعد؟¶
- Pull requests — تفاصيل أكثر عن صفحة الـ pull request.
- Protected branches — امنع الـ push المباشر إلى
main. - الأخطاء الشائعة وحلولها — إن تعثّر الـ push أو الـ merge.