اذهب إلى المحتوى

نظام غيت Git هو نظام إدارة الإصدارات الموزعة distributed version الذي يسهّل إدارة المشاريع البرمجية المشتركة. تحتفظ العديد من المشاريع بملفاتها في مستودع غيت Git repository، كما جعلت مواقع، مثل غيت هَب GitHub مشاركة الشيفرة البرمجية والمساهمة فيها متاحةً ومفيدةً وفعالةً.

تفيد المساهمات التي يقدمها مجتمع المطورين العام في تطوير المشاريع مفتوحة المصدر المستضافة في المستودعات من خلال طلبات السحب pull requests التي تطلب أن يقبل مشرف المشروع التعديلات التي أجريتها على مستودع شيفرته البرمجية.

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

يجب أن يكون نظام غيت مثبّتًا على جهازك المحلي، ويمكنك التحقق إذا كان مثبتًا على حاسوبك والخوض في عملية تثبيته على نظام التشغيل لديك من خلال الاطلاع على مقال كيف تساهم في المشاريع مفتوحة المصدر: ابدأ بتعلم نظام Git.

كما تحتاج إلى إنشاء حساب على موقع غيت هَب، إذ تستطيع إنشاء حساب أو تسجيل الدخول على حسابك إذا سبق وأنشأته من خلال زيارة موقع غيت هَب github.com.

ألغى موقع غيت هَب الاستيثاق authentication عن طريق كلمة المرور في بداية شهر تشرين الثاني من عام 2020، لذا ستحتاج إلى إنشاء رمز وصول شخصي access token، أو إضافة معلومات المفتاح العام للوصول عن طريق SSH حتى تتمكن من الوصول إلى مستودعات غيت هَب من خلال واجهة الأوامر.

وأخيرًا، عليك أن تحدد المشروع البرمجي مفتوح المصدر الذي تريد المساهمة فيه.

إنشاء نسخة عن المستودع

إن المستودع repository، والذي يُشار إليه بكلمة ريبو أو repo هو المجلد الرئيسي للمشروع أساسًا، ويحتوي على جميع الملفات المتعلقة بالمشروع، مثل ملفات التوثيق documentation، كما يحتفظ بسجل التعديلات revision history لكل ملف. ويمكن أن يشترك أكثر من شخص في العمل على المستودعات على موقع غيت هَب، كما يمكن أن تكون عامةً أو مغلقة.

حتى تعمل على مشروع مفتوح المصدر ستحتاج أولًا إلى إنشاء نسخة عن المستودع خاصةً بك؛ ولتنفيذ هذا اشتق fork المستودع، ثم استنسخه clone حتى يصبح لديك نسخةً محليةً فعالةً.

اشتقاق المستودع

لاشتقاق مستودع على موقع غيت هَب انتقل إلى رابط المشروع مفتوح المصدر الذي تريد المساهمة فيه على الموقع من خلال المتصفح لديك، إذ تشير روابط المستودعات على غيت هَب إلى كلٍ من اسم المستخدم المرتبط بمالك المستودع إضافةً إلى اسم المستودع؛ فمثلًا إذا مالك مستودع مشروع "cloud_haiku" هو مجتمع DigitalOcean، فسيكون رابط هذا المشروع على موقع غيت هَب على النحو التالي:

https://github.com/do-community/cloud_haiku

يشير do-community في هذا المثال إلى اسم المستخدم و cloud_haiku إلى اسم المستودع.

بعد أن حددت المشروع الذي تريد المساهمة فيه، انتقل إلى الرابط الذي ستكون صيغته على النحو التالي:

https://github.com/username/repository

أو يمكنك البحث عنه في شريط بحث موقع غيت هَب.

عندما تفتح الصفحة الرئيسية للمستودع، ستجد زر الاشتقاق Fork في زاوية الصفحة العليا على اليمين، وأسفل أيقونة المستخدم الخاص بك:

001ch_gh_arrow_blink.gif

(سهم وامض)

عند الضغط على زر الاشتقاق لبدء عملية الاشتقاق، ستتلقى إشعارًا ضمن المتصفح لديك يفيد بأن المستودع الذي تشتقه قيد المعالجة:

002GitHub_Forking.png

(الاشتقاق في غيت هَب)

سينتقل المتصفح لديك إلى صفحةٍ مشابهة لصفحة المستودع السابقة عند الانتهاء من العملية، مع اختلافَين بسيطين يتمثلان بأنك سترى في الأعلى اسم المستخدم الخاص بك قبل اسم المستودع، كما ستجده قبل اسم المستودع في الرابط.

إذًا سترى الآن في المثال الذي طرحناه your-username / cloud_haiku بدلًا عن do-community / cloud_haiku في أعلى الصفحة، حيث أن your-username هي اسم المستخدم الخاص بك، وسيكون الرابط الجديد على النحو التالي:

https://github.com/your-username/cloud_haiku

بعد اشتقاق المستودع، يمكنك البدء باستنساخه clone لتصبح لديك نسخةً محليةً فعالةً من الشيفرة الأساسية.

استنساخ المستودع

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

سيكون هذا الرابط مشابهًا للرابط الذي ذكرناه سابقًا، إلا أن هذا الرابط سينتهي باللاحقة git.، وسيكون الرابط حسب مثالنا عن "cloud_haiku" على النحو التالي:

https://github.com/your-username/cloud_haiku.git

أو يمكنك نسخ الرابط باستخدام الزر الأخضر الشيفرة Code⤓ الموجود في صفحة مستودعك الذي اشتققته من صفحة المستودع الأصلية، وبمجرد الضغط على الزر ستتمكن من نسخ الرابط من خلال النقر على زر المجلد binder بجانب الرابط:

003ch_gh_codebox_arrow.png

(سهم يشير إلى زر المجلد في مربع الشيفرة)

عندما نحصل على الرابط سنكون جاهزين لاستنساخ المستودع، ولتنفيذ ذلك سنجمّع أمر git clone مع رابط المستودع في موجه الأوامر في الطرفية على النحو التالي:

git clone https://github.com/your-username/repository.git

أصبح لدينا الآن نسخةً محليةً من الشيفرة البرمجية، لذا يمكننا الانتقال إلى إنشاء فرعٍ branch جديدٍ لنعمل ضمنه على الشيفرة البرمجية.

إنشاء فرع جديد

عندما تعمل على مشروع مبني على العمل التشاركي، سيكون لديك ولدى غيرك من المبرمجين المساهمين في المستودع أفكارًا مختلفةً لخصائصٍ جديدة أو حلولٍ لمشكلاتٍ معينة في نفس الوقت، إذ لن تستهلك بعض هذه الخصائص وقتًا في تطبيقها، بينما سيكون العمل على بعضها الآخر جارٍ؛ لذا من الضروري أن تنشئ فرعًا عن المستودع حتى تتمكن من إدارة سير العمل، وعزل شيفرتك البرمجية، والتحكم في تحديد الخصائص المُعتمَدة في الفرع الرئيسي للمستودع.

يدعى الفرع الأولي primary من مستودع مشروع عادةً الفرع الرئيسي main. ومن أفضل الممارسات الشائعة أن تعد أي شيءٍ ضمن الفرع الرئيسي قابلًا للنشر ليستخدمه الآخرون متى شاؤوا.

ملاحظة: حدَّث موقع غيت هَب المصطلحات التي يستخدمها ليشير إلى مستودعات الشيفرة البرمجية المصدرية الافتراضية بالمستودع الرئيسي main بدل المستودع الأساسي master؛ فإذا كان الموقع لديك ما زال يشير إلى الفرع الرئيسي بمصطلح master، يمكنك تحديثه إلى main بتغيير إعدادات الفرع الافتراضية.

احرص على إنشاء الفرع الجديد من الفرع الرئيسي، كما عليك أن تختار اسمًا توصيفيًا لهذا الفرع؛ فبدلًا من تسميته "my-branch" سمّه "frontend-hook-migration" أي "تهجير-خطاف-الواجهة الأمامية"، أو fix-documentation-typos أي "تصحيح-التوثيق-الأخطاء الإملائية".

لإنشاء فرعٍ على نافذة طرفيتنا، نبدأ بتغيير المجلد لنعمل ضمن مجلد المستودع، ونتأكد من استخدام الاسم الفعلي للمستودع، مثل "cloud_haiku" للانتقال إلى مجلده.

cd repository

ثم ننشئ فرعنا الجديد بواسطة الأمر git branch، لذلك احرص على تسميته تسميةً توصيفية كي يفهم الآخرون الذين يعملون على المشروع ما الذي تعمل عليه.

git branch new-branch

بعد أن أنشأنا فرعنا الجديد نستطيع الانتقال إليه لنتأكد أننا نعمل على ذلك الفرع من خلال تنفيذ الأمر git checkout على النحو التالي:

git checkout new-branch

سيرِد الخرج التالي عندما تدخل الأمر git checkout:

Switched to branch 'new-branch'

أو يمكنك اختصار الأمرين السابقين، وهما إنشاء فرع جديد والانتقال إليه، بواسطة الأمر التالي وإضافة الراية b-:

git checkout -b new-branch

إذا أردت العودة إلى الفرع الرئيسي أو main، استخدم الأمر checkout مع إدخال اسم الفرع الرئيسي:

git checkout main

يتيح لك الأمر checkout الانتقال بين عدة فروع، لذا تستطيع العمل على عدة خصائص بنفس الوقت.

تستطيع حتى الآن تعديل ملفات موجودة أو إضافة ملفات جديدة إلى المشروع الموجود ضمن فرعك.

إجراء التعديلات محليًا

دعنا نبدأ بإنشاء ملف جديد وليكن اسمه "poetry.md" باستخدام محرّر النصوص الذي تفضله، وسنستخدم في مثالنا هذا محرر النصوص نانو nano:

nano poetry.md

أضف أي محتوًى إلى ملفك الجديد، فمثلًا نحن أضفنا الاسم "haiku" في هذا الملف:

The taste
Of rain
Why kneel?

The Taste of Rain by Jack Kerouac

بعد إدخال المحتوى الذي تريده، احفظ التعديلات وأغلق الملف؛ وإذا كنت تستخدم محرر النصوص نانو، يمكنك تنفيذ ذلك بالضغط على "CTRL + X"، ثم "y"، ثم "ENTER".

بعد أن عدّلت ملفًا موجودًا أو أضفت ملفًا جديدًا إلى المشروع، يمكنك إضافته إلى مستودعك المحلي عن طريق تنفيذ الأمر git add على النحو التالي:

git add filename.md

بدِّل الآن filename.md باسم الملف poetry.md الذي أنشأته لإضافته إلى مستودعك المحلي:

git add poetry.md

سيؤكد لك هذا الأمر أن ملفك جاهزٌ للإضافة. وإذا كنت تريد أن تضيف جميع الملفات الموجودة في مجلد معين، يمكنك إدراجها من خلال الأمر . git add، إذ ستضيف النقطة أو الفاصلة جميع الملفات المعنية؛ وإذا أردت إضافة جميع التعديلات متضمنةً المجلدات الفرعية بصورةٍ متكررة، نفذ الأمر git add -A أو git add -all لإدراج جميع الملفات الجديدة.

بعد إدراج ملفاتنا، يُفضَّل تسجيل التعديلات التي أجريناها في المستودع بتنفيذ الأمر git commit.

تُعد رسالة الإيداع commit عنصرًا مهمًا في مساهمتك في الشيفرة البرمجية؛ فهي تساعد المساهمين الآخرين على فهم التعديلات التي أجريتها كاملةً، وسبب إجرائها، ومدى أهميتها، إضافةً إلى توفير سجلٍ تاريخي للتغييرات المُجراة على المشروع عامةً، لمساعدة المساهمين المستقبليين.

إذا كانت الرسالة مقتضبةً، نستطيع تسجيلها بإضافة الراية m- ووضع الرسالة بين إشارتي اقتباس على النحو التالي:

git commit -m "Added a new haiku in poetry.md file"

أما إذا لم تكن التغييرات طفيفة، يفضَّل إضافة رسالة إيداع أطول، ليكون المساهمون الآخرون على درايةٍ بآخر مستجدات مساهماتنا. لتوضيح ذلك أنشئ ملفًا جديدًا آخر:

nano more-poetry.md

ثم أضف إليه بعض المحتوى ليكون الملف "more-poetry.md" على النحو التالي:

The light of a candle
Is transferred to another candle
Spring twilight

Lightning One Candle by Yosa Buson

بعد إضافة المحتوى إلى الملف، احفظ التعديلات وأغلقه؛ وإذا كنت تستخدم محرر النصوص نانو يمكنك تنفيذ ذلك بالضغط على "CTRL + X"، ثم "Y"، ثم "ENTER".

ثم نفذ الأمر git add لإضافة الملف الجديد إلى إلى مستودعك المحلي:

git add more-poetry.md

إذا أردت إضافة رسالة إيداع أطول، نفِّذ الأمر git commit دون إضافة أية رايات لفتح محرر النصوص الافتراضي على نظام التشغيل لديك.

git commit

إذا أردت ضبط محرر النصوص الافتراضي لديك، نفِّذ الأمر git config وحدد نانو مثلًا ليكون المحرر الافتراضي:

git config --global core.editor "nano"

أو ليكن محرر النصوص فيم vim:

git config --global core.editor "vim"

وبعد تنفيذ الأمر، ستعرض نافذة الطرفية مستندًا جاهزًا لتعديله حسب محرر النصوص الافتراضي الذي تستخدمه، وسيبدو المستند مشابهًا للنموذج التالي:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch new-branch
# Your branch is up-to-date with 'origin/new-branch'.
#
# Changes to be committed:
#       modified:   new-feature.py
#

أضف رسالة الإيداع إلى الملف النصي أسفل التعليقات الافتتاحية.

لكتابة رسالة إيداع مفيدة، عليك أن تضيف في السطر الأول ملخصًا يتألف من حوالي 50 حرفًا، ثم أضِف تحته توصيفًا ينص على سبب إجرائك لهذا التعديل، وآلية عمل شيفرتك البرمجية، ومعلوماتٍ إضافية ستحدد سياقها وتوضِّحها للآخرين الذين سيراجعون عملك بعد دمجه، وقسِّم كل ما سبق إلى مقاطع مفهومة، وحاول قدر استطاعتك أن تكون رسالتك مفيدةً وتفاعليةً لتضمن أن يفهم مشرفو المشروع مساهمتك فهمًا تامًا.

تعديلات الدفع push

بعد أن تحفظ ملف رسالة الإيداع النصي وتغلقه، يمكنك التحقق من رسالة الإيداع التي ستخصِّصها غيت بتنفيذ الأمر التالي:

 git status

وسيكون الخرج مشابهًا للنموذج التالي حسب التعديلات التي أجريتها:

On branch new-branch
nothing to commit, working tree clean

تستطيع في هذه المرحلة تنفيذ الأمر git push لتطبيق التعديلات على الفرع الحالي لمستودعك المُشتَق:

git push --set-upstream origin new-branch

سيزودك هذا الأمر بخرجٍ يُعلمك بمسار التقدم، وسيبدو مثل النموذج التالي:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 336 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/your-username/repository.git
   a1f29a6..79c0e80  new-branch  -> new-branch
Branch new-branch set up to track remote branch new-branch from origin.

انتقل الآن إلى مستودعك المشتق على صفحة موقع غيت هَب وبدِّل إلى الفرع الذي طبقت عليه التعديلات لمشاهدتها ضمن المتصفح، إذ يمكنك في هذه المرحلة إنشاء طلب سحب إلى المستودع الأصلي؛ لكن إذا لم تفعل ذلك مسبقًا، يُستحسن أن تتأكد أن مستودعك المحلي محدَّثًا مع المستودع الأولي upstream.

تحديث المستودع المحلي

أثناء عملك على مشروع إلى جانب مساهمين آخرين، من المهم أن تبقي مستودعك المحلي محدثًا مع المشروع، فليس من مصلحتك أن تنشئ طلب سحب لشيفرةٍ برمجية ستسبب تعارضًا مع شيفراتٍ برمجية أخرى. ولتبقى نسخة الشيفرة البرمجية المحلية محدَّثةً، ستحتاج إلى مزامنة التعديلات.

سنبدأ باستعراض ضبط مستودع بعيد remote للاشتقاق، ثم مزامنته.

ضبط مستودع بعيد للاشتقاق

تتيح لك المستودعات البعيدة Remote repositories المساهمة مع الآخرين على مشروع في غيت، إذ يُعَد كل مستودعٍ بعيد إصدارًا من إصدارات المشروع المُستضافة على الإنترنت، أو الموجودة على شبكةٍ يمكنك الوصول إليها. ويجب أن يتوفر لديك وصول إلى كل مستودع بعيد؛ إما بصلاحيات قراءة فقط، أو صلاحيات قراءة وكتابة، ويعتمد ذلك على صلاحيات المستخدم الخاص بك.

تحتاج إلى ضبط مستودعٍ بعيدٍ مرجعي إلى المستودع الأولي حتى تتمكن من مزامنة التعديلات التي تجريها في المستودع المشتَق مع المستودع الأصلي الذي تعمل عليه، كما ينبغي عليك إعداد المستودع البعيد ليتزامن مع المستودع الأصلي مرةً واحدةً فقط.

لنبدأ بالتحقق ما هي الخوادم البعيدة التي ضبطتها، إذ سيعرض الأمر git remote المستودعات البعيدة التي حدَّدتها مُسبقًا؛ لذا إذا استنسخت مستودعك كما فعلنا سابقًا، سترى المستودع الرئيسي origin repository على الأقل، وهو الاسم الافتراضي الذي تطلقه غيت للمجلد المستنسَخ.

سنستخدم الأمر git remote إضافةً إلى الراية v عندما نكون ضمن مجلد المستودع في طرفيتنا لعرض الروابط التي خزَّنها غيت إضافةً إلى الأسماء المختصرة للمستودعات البعيدة ذات الصلة، مثل "origin":

git remote -v

سيبدو الخرج مشابهًا للنموذج التالي بما أننا استنسخنا مستودعًا:

origin    https://github.com/your-username/forked-repository.git (fetch)
origin    https://github.com/your-username/forked-repository.git (push)

إذا أعددت أكثر من مستودع مسبقًا، سيزودك الأمر git remote -v بقائمةٍ تعرضها جميعًا.

ثم سنحدد مستودعًا رئيسيًا بعيدًا جديد لنزامنه مع المستودع المُشتَق، وسيكون هذا المستودع بمثابة المستودع الأصلي الذي اشتقينا منه، وسننفِّذ ذلك بواسطة الأمر git remote add:

git remote add upstream https://github.com/original-owner-username/original-repository.git

تشير upstream في هذا المثال إلى الاسم المختصر المُسنَد إلى المستودع البعيد، بما أن "upstream" في مصطلحات غيت تشير إلى المستودع الذي استنسخنا منه؛ وإذا أردنا إضافة مؤشر بعيد remote pointer إلى مستودع أحد المساهمين، علينا تقديم اسم مستخدم ذلك المساهم، أو اسمًا مستعارًا مختصرًا للاسم المُختصر.

للتحقق من إضافة مؤشرنا البعيد إلى المستودع الأولي كما ينبغي، استعن بالأمر git remote -v مجددًا من مجلد المستودع:

git remote -v

وسيكون الخرج:

origin    https://github.com/your-username/forked-repository.git (fetch)
origin    https://github.com/your-username/forked-repository.git (push)
upstream    https://github.com/original-owner-username/original-repository.git (fetch)
upstream    https://github.com/original-owner-username/original-repository.git (push)

تستطيع الآن ذكر upstream في موجه الأوامر بدلًا من كتابة الرابط كاملًا، وأصبحت جاهزًا لمزامنة مستودعك المشتَق مع المستودع الأصلي.

مزامنة المستودع المشتَق

بعد ما ضبطنا مستودعًا بعيدًا يشير إلى المستودعين الأولي والأصلي على غيت هَب، أصبحنا جاهزين لمزامنة مستودعنا المشتق لنبقيه محدَّثًا، ولتحقيق ذلك سننفذ الأمر git fetch عندما نكون ضمن مجلد مستودعنا المحلي في الطرفية، ليجلب الفروع ورسائل الإيداع التابعة لها من المستودع الرئيسي. وبما أننا استخدمنا الاسم المختصر "upstream" للإشارة إلى المستودع الأولي، سنذكره في صيغة الأمر:

git fetch upstream

سيختلف الخرج الذي ستتلقاه على حسب كمية التعديلات المُجراة منذ اشتققنا المستودع، وقد يتضمن بعض الأسطر عن عدّ العناصر وضغطها وفك ضغطها، إذ سيبدو الخرج مشابهًا للنموذج التالي، لكنه قد يختلف حسب عدد الأفرع التي يتألف منها المشروع:

From https://github.com/original-owner-username/original-repository
 * [new branch]      main     -> upstream/main

ستُخزَّن الآن رسائل إيداع الفرع الرئيسي في فرعٍ محلي يُسمى "upstream/main". لننتقل إلى الفرع الرئيسي المحلي لمستودعنا:

git checkout main
Switched to branch 'main'

سندمج الآن أية تعديلات أجريت في الفرع الرئيسي للمستودع الأصلي مع فرعنا الرئيسي المحلي، إذ سنصل إلى الفرع الرئيسي من خلال فرعنا الرئيسي/الأولي المحلي:

git merge upstream/main

سيتغير خرج هذا الأمر، لكنه سيبدأ بكلمة "updating" إذا أجريت تعديلات؛ أو "Already up-to-date" في حال عدم إجراء أية تعديلات منذ اشتقاق المستودع.

أصبح الفرع الرئيسي للمستودع المشتَق متزامنًا مع المستودع الأولي، ولن تفقد أية تعديلات محلية تجريها.

يمكنك تكرار مزامنة مستودعك المشتق مع الشيفرة البرمجية الأولية للمستودع الرئيسي بالقدر الذي تجده مناسبًا وذلك حسب سير عملك والوقت الذي تقضيه في إجراء التعديلات. لكن لا بُد من مزامنة مستودعك المشتق مباشرةً قبل أن تنشئ طلب سحب لتتأكد أنك لا تتسبب في تضارب الشيفرات البرمجية.

إنشاء طلب سحب

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

انتقل إلى مستودعك المشتق واضغط على زر طلب سحب جديد New pull request الموجود على الجانب اليساري من الصفحة.

004PRButton.png

(زر طلب سحب جديد)

تستطيع تعديل الفرع في الصفحة التالية، كما يمكنك اختيار المستودع والفرع الملائمَين في كلا الصفحتين من القائمة المنسدلة؛ فمثلًا عندما تختار الفرع الرئيسي من المستودع الأصلي الموجود في الجانب اليساري من الصفحة، والفرع الجديد new-branch من مستودعك المشتق الموجود على الجانب اليميني من الصفحة، ستظهر لك صفحةٌ تنص على أنك تستطيع دمج فروعك، إذا لم يوجد فيها شيفرةً برمجيةً متضاربة:

005PullRequest.png

(طلب سحب)

أضِف عنوانًا وتعليقًا في الحقول المناسبة، ثم اضغط زر إنشاء طلب سحب Create pull request، وسيقرر المشرفون على المستودع الرئيسي في هذه المرحلة هل يقبلون طلب السحب الذي أنشأته أم لا، وقد يطلبون منك تعديل، أو تنقيح شيفرتك البرمجية قبل قبول طلب السحب.

الخاتمة

لقد نجحت في هذه المرحلة بإرسال طلب سحب إلى مستودع برنامج مفتوح المصدر. وعليك بعد ذلك أن تحرص على تحديث وإعادة تأسيس rebase شيفرتك البرمجية خلال فترة انتظارك مُراجعتها، واِستعد لإعادة صياغة شيفرتك البرمجية إذا طلب منك المشرفون على المشروع ذلك.

قد تكون مساهمتك في المشاريع مفتوحة المصدر وارتقائك لتصبح مطورًا نشطًا للبرامج مفتوحة المصدر تجربةً مثمرةً؛ كما تتيح مساهماتك الدورية في برنامجٍ تعمل عليه باستمرار لك التأكُّد من تقديم هذا البرنامج للمستخدمين النهائيين بأمثل إصدار ممكن له.

إذا كنت مهتمًا بتعلم المزيد عن نظام غيت والمساهمة في البرامج مفتوحة المصدر، فاطلع على سلسلة دروسنا التعليمية التي تحمل عنوان مقدمة عن البرامج مفتوحة المصدر، أما إذا كانت معرفتك لا بأس بها عن نظام غيت وترغب في الحصول على ورقة مرجعية عنه اطلع على المقالة كيف تستخدم نظام غيت: دليل مرجعي.

ترجمة -وبتصرف- للمقال How To Create a Pull Request on GitHub لصاحبته Lisa Tagliaferri.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...