|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "361249da70432ddfd4741c917d1a6f50",
|
|
|
"translation_date": "2025-08-28T15:11:45+00:00",
|
|
|
"source_file": "1-getting-started-lessons/2-github-basics/README.md",
|
|
|
"language_code": "ar"
|
|
|
}
|
|
|
-->
|
|
|
# مقدمة إلى GitHub
|
|
|
|
|
|
تتناول هذه الدرس أساسيات GitHub، وهي منصة لاستضافة وإدارة تغييرات الكود الخاص بك.
|
|
|
|
|
|

|
|
|
> رسم توضيحي بواسطة [Tomomi Imura](https://twitter.com/girlie_mac)
|
|
|
|
|
|
## اختبار ما قبل المحاضرة
|
|
|
[اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app)
|
|
|
|
|
|
## المقدمة
|
|
|
|
|
|
في هذا الدرس، سنتناول:
|
|
|
|
|
|
- تتبع العمل الذي تقوم به على جهازك
|
|
|
- العمل على المشاريع مع الآخرين
|
|
|
- كيفية المساهمة في البرمجيات مفتوحة المصدر
|
|
|
|
|
|
### المتطلبات الأساسية
|
|
|
|
|
|
قبل أن تبدأ، ستحتاج إلى التحقق مما إذا كان Git مثبتًا. في الطرفية، اكتب:
|
|
|
`git --version`
|
|
|
|
|
|
إذا لم يكن Git مثبتًا، [قم بتنزيل Git](https://git-scm.com/downloads). ثم قم بإعداد ملف تعريف Git المحلي الخاص بك في الطرفية:
|
|
|
* `git config --global user.name "your-name"`
|
|
|
* `git config --global user.email "your-email"`
|
|
|
|
|
|
للتحقق مما إذا كان Git قد تم تكوينه بالفعل، يمكنك كتابة:
|
|
|
`git config --list`
|
|
|
|
|
|
ستحتاج أيضًا إلى حساب GitHub، ومحرر كود (مثل Visual Studio Code)، وستحتاج إلى فتح الطرفية (أو: موجه الأوامر).
|
|
|
|
|
|
انتقل إلى [github.com](https://github.com/) وأنشئ حسابًا إذا لم تكن قد فعلت ذلك بالفعل، أو قم بتسجيل الدخول واملأ ملفك الشخصي.
|
|
|
|
|
|
✅ GitHub ليس مستودع الكود الوحيد في العالم؛ هناك مستودعات أخرى، ولكن GitHub هو الأكثر شهرة.
|
|
|
|
|
|
### التحضير
|
|
|
|
|
|
ستحتاج إلى مجلد يحتوي على مشروع كود على جهازك المحلي (اللابتوب أو الكمبيوتر الشخصي)، ومستودع عام على GitHub، والذي سيعمل كمثال على كيفية المساهمة في مشاريع الآخرين.
|
|
|
|
|
|
---
|
|
|
|
|
|
## إدارة الكود
|
|
|
|
|
|
لنفترض أن لديك مجلدًا محليًا يحتوي على مشروع كود وترغب في البدء بتتبع تقدمك باستخدام Git - نظام التحكم في الإصدارات. يشبه بعض الأشخاص استخدام Git بكتابة رسالة حب لنفسك المستقبلية. عند قراءة رسائل الالتزام الخاصة بك بعد أيام أو أسابيع أو أشهر، ستتمكن من تذكر سبب اتخاذك لقرار معين، أو "التراجع" عن تغيير - وهذا عندما تكتب رسائل "التزام" جيدة.
|
|
|
|
|
|
### المهمة: إنشاء مستودع والالتزام بالكود
|
|
|
|
|
|
> شاهد الفيديو
|
|
|
>
|
|
|
> [](https://www.youtube.com/watch?v=9R31OUPpxU4)
|
|
|
|
|
|
1. **إنشاء مستودع على GitHub**. على GitHub.com، في علامة التبويب الخاصة بالمستودعات، أو من شريط التنقل العلوي الأيمن، ابحث عن زر **مستودع جديد**.
|
|
|
|
|
|
1. أعطِ مستودعك (المجلد) اسمًا.
|
|
|
1. اختر **إنشاء مستودع**.
|
|
|
|
|
|
1. **انتقل إلى مجلد العمل الخاص بك**. في الطرفية، انتقل إلى المجلد (المعروف أيضًا بالدليل) الذي تريد البدء بتتبعه. اكتب:
|
|
|
|
|
|
```bash
|
|
|
cd [name of your folder]
|
|
|
```
|
|
|
|
|
|
1. **تهيئة مستودع Git**. في مشروعك، اكتب:
|
|
|
|
|
|
```bash
|
|
|
git init
|
|
|
```
|
|
|
|
|
|
1. **التحقق من الحالة**. للتحقق من حالة مستودعك، اكتب:
|
|
|
|
|
|
```bash
|
|
|
git status
|
|
|
```
|
|
|
|
|
|
قد يبدو الإخراج كالتالي:
|
|
|
|
|
|
```output
|
|
|
Changes not staged for commit:
|
|
|
(use "git add <file>..." to update what will be committed)
|
|
|
(use "git checkout -- <file>..." to discard changes in working directory)
|
|
|
|
|
|
modified: file.txt
|
|
|
modified: file2.txt
|
|
|
```
|
|
|
|
|
|
عادةً ما يخبرك أمر `git status` بأشياء مثل الملفات الجاهزة ليتم _حفظها_ في المستودع أو التي تحتوي على تغييرات قد ترغب في الاحتفاظ بها.
|
|
|
|
|
|
1. **إضافة جميع الملفات للتتبع**
|
|
|
يُعرف هذا أيضًا بمرحلة الملفات/إضافتها إلى منطقة التهيئة.
|
|
|
|
|
|
```bash
|
|
|
git add .
|
|
|
```
|
|
|
|
|
|
يشير الأمر `git add` مع الحجة `.` إلى أن جميع ملفاتك وتغييراتك جاهزة للتتبع.
|
|
|
|
|
|
1. **إضافة ملفات محددة للتتبع**
|
|
|
|
|
|
```bash
|
|
|
git add [file or folder name]
|
|
|
```
|
|
|
|
|
|
يساعدنا هذا الأمر في إضافة ملفات محددة فقط إلى منطقة التهيئة عندما لا نرغب في الالتزام بجميع الملفات دفعة واحدة.
|
|
|
|
|
|
1. **إلغاء تهيئة جميع الملفات**
|
|
|
|
|
|
```bash
|
|
|
git reset
|
|
|
```
|
|
|
|
|
|
يساعدنا هذا الأمر في إلغاء تهيئة جميع الملفات دفعة واحدة.
|
|
|
|
|
|
1. **إلغاء تهيئة ملف معين**
|
|
|
|
|
|
```bash
|
|
|
git reset [file or folder name]
|
|
|
```
|
|
|
|
|
|
يساعدنا هذا الأمر في إلغاء تهيئة ملف معين فقط دفعة واحدة عندما لا نرغب في تضمينه في الالتزام التالي.
|
|
|
|
|
|
1. **حفظ عملك**. في هذه المرحلة، قمت بإضافة الملفات إلى ما يسمى _منطقة التهيئة_. وهي مكان يتتبع فيه Git ملفاتك. لجعل التغيير دائمًا، تحتاج إلى _الالتزام_ بالملفات. للقيام بذلك، أنشئ _التزامًا_ باستخدام أمر `git commit`. يمثل _الالتزام_ نقطة حفظ في تاريخ مستودعك. اكتب ما يلي لإنشاء _التزام_:
|
|
|
|
|
|
```bash
|
|
|
git commit -m "first commit"
|
|
|
```
|
|
|
|
|
|
هذا يلتزم بجميع ملفاتك، مع إضافة الرسالة "الالتزام الأول". بالنسبة لرسائل الالتزام المستقبلية، سترغب في أن تكون أكثر وصفًا لتوضيح نوع التغيير الذي قمت به.
|
|
|
|
|
|
1. **ربط مستودع Git المحلي الخاص بك بـ GitHub**. مستودع Git مفيد على جهازك، ولكن في مرحلة ما، سترغب في الحصول على نسخة احتياطية من ملفاتك في مكان ما ودعوة أشخاص آخرين للعمل معك على مستودعك. مكان رائع للقيام بذلك هو GitHub. تذكر أننا أنشأنا بالفعل مستودعًا على GitHub، لذا الشيء الوحيد الذي نحتاج إلى القيام به هو ربط مستودع Git المحلي الخاص بنا بـ GitHub. سيقوم الأمر `git remote add` بذلك. اكتب الأمر التالي:
|
|
|
|
|
|
> ملاحظة، قبل كتابة الأمر، انتقل إلى صفحة مستودع GitHub الخاص بك للعثور على عنوان URL الخاص بالمستودع. ستستخدمه في الأمر أدناه. استبدل ```https://github.com/username/repository_name.git``` بعنوان URL الخاص بـ GitHub.
|
|
|
|
|
|
```bash
|
|
|
git remote add origin https://github.com/username/repository_name.git
|
|
|
```
|
|
|
|
|
|
هذا ينشئ _اتصالًا_، أو ارتباطًا، يسمى "origin" يشير إلى مستودع GitHub الذي أنشأته سابقًا.
|
|
|
|
|
|
1. **إرسال الملفات المحلية إلى GitHub**. حتى الآن، قمت بإنشاء _اتصال_ بين المستودع المحلي ومستودع GitHub. لنرسل هذه الملفات إلى GitHub باستخدام الأمر `git push`، كما يلي:
|
|
|
|
|
|
> ملاحظة، قد يكون اسم الفرع الخاص بك مختلفًا افتراضيًا عن ```main```.
|
|
|
|
|
|
```bash
|
|
|
git push -u origin main
|
|
|
```
|
|
|
|
|
|
هذا يرسل التزاماتك في فرع "main" الخاص بك إلى GitHub.
|
|
|
|
|
|
2. **لإضافة تغييرات إضافية**. إذا كنت ترغب في الاستمرار في إجراء تغييرات ودفعها إلى GitHub، ستحتاج فقط إلى استخدام الأوامر الثلاثة التالية:
|
|
|
|
|
|
```bash
|
|
|
git add .
|
|
|
git commit -m "type your commit message here"
|
|
|
git push
|
|
|
```
|
|
|
|
|
|
> نصيحة، قد ترغب أيضًا في اعتماد ملف `.gitignore` لمنع الملفات التي لا تريد تتبعها من الظهور على GitHub - مثل ملف الملاحظات الذي تخزنه في نفس المجلد ولكنه ليس له مكان في مستودع عام. يمكنك العثور على قوالب لملفات `.gitignore` في [.gitignore templates](https://github.com/github/gitignore).
|
|
|
|
|
|
#### رسائل الالتزام
|
|
|
|
|
|
يجب أن تكمل سطر موضوع الالتزام الجيد في Git الجملة التالية:
|
|
|
إذا تم تطبيقه، فإن هذا الالتزام سيقوم بـ <سطر الموضوع الخاص بك هنا>
|
|
|
|
|
|
بالنسبة للموضوع، استخدم صيغة الأمر، الزمن الحاضر: "تغيير" وليس "تم التغيير" ولا "تغييرات".
|
|
|
كما هو الحال في الموضوع، في النص (اختياري) أيضًا استخدم صيغة الأمر، الزمن الحاضر. يجب أن يتضمن النص الدافع للتغيير ومقارنة ذلك بالسلوك السابق. أنت تشرح `لماذا`، وليس `كيف`.
|
|
|
|
|
|
✅ خذ بضع دقائق لتصفح GitHub. هل يمكنك العثور على رسالة التزام رائعة حقًا؟ هل يمكنك العثور على واحدة بسيطة جدًا؟ ما المعلومات التي تعتقد أنها الأكثر أهمية وفائدة لنقلها في رسالة الالتزام؟
|
|
|
|
|
|
### المهمة: التعاون
|
|
|
|
|
|
السبب الرئيسي لوضع الأشياء على GitHub هو جعل التعاون مع المطورين الآخرين ممكنًا.
|
|
|
|
|
|
## العمل على المشاريع مع الآخرين
|
|
|
|
|
|
> شاهد الفيديو
|
|
|
>
|
|
|
> [](https://www.youtube.com/watch?v=bFCM-PC3cu8)
|
|
|
|
|
|
في مستودعك، انتقل إلى `Insights > Community` لترى كيف يقارن مشروعك بالمعايير المجتمعية الموصى بها.
|
|
|
|
|
|
إليك بعض الأشياء التي يمكن أن تحسن مستودع GitHub الخاص بك:
|
|
|
- **الوصف**. هل أضفت وصفًا لمشروعك؟
|
|
|
- **README**. هل أضفت ملف README؟ يوفر GitHub إرشادات لكتابة [README](https://docs.github.com/articles/about-readmes/?WT.mc_id=academic-77807-sagibbon).
|
|
|
- **إرشادات المساهمة**. هل يحتوي مشروعك على [إرشادات المساهمة](https://docs.github.com/articles/setting-guidelines-for-repository-contributors/?WT.mc_id=academic-77807-sagibbon)؟
|
|
|
- **مدونة السلوك**. هل يحتوي مشروعك على [مدونة سلوك](https://docs.github.com/articles/adding-a-code-of-conduct-to-your-project/)؟
|
|
|
- **الرخصة**. ربما الأهم من ذلك، هل يحتوي مشروعك على [رخصة](https://docs.github.com/articles/adding-a-license-to-a-repository/)؟
|
|
|
|
|
|
كل هذه الموارد ستفيد في استيعاب أعضاء الفريق الجدد. وعادةً ما تكون هذه هي الأشياء التي ينظر إليها المساهمون الجدد قبل حتى النظر إلى الكود الخاص بك، لمعرفة ما إذا كان مشروعك هو المكان المناسب لهم لقضاء وقتهم.
|
|
|
|
|
|
✅ ملفات README، على الرغم من أنها تستغرق وقتًا لإعدادها، غالبًا ما يتم إهمالها من قبل المشرفين المشغولين. هل يمكنك العثور على مثال لملف README وصفي بشكل خاص؟ ملاحظة: هناك بعض [الأدوات التي تساعد في إنشاء ملفات README جيدة](https://www.makeareadme.com/) قد ترغب في تجربتها.
|
|
|
|
|
|
### المهمة: دمج بعض الكود
|
|
|
|
|
|
تساعد وثائق المساهمة الأشخاص على المساهمة في المشروع. تشرح الوثائق أنواع المساهمات التي تبحث عنها وكيفية عمل العملية. سيحتاج المساهمون إلى المرور بسلسلة من الخطوات ليتمكنوا من المساهمة في مستودعك على GitHub:
|
|
|
|
|
|
1. **استنساخ مستودعك**. ربما سترغب في أن يقوم الأشخاص بـ _استنساخ_ مشروعك. الاستنساخ يعني إنشاء نسخة من مستودعك على ملفهم الشخصي في GitHub.
|
|
|
1. **الاستنساخ المحلي**. من هناك، سيقومون باستنساخ المشروع إلى جهازهم المحلي.
|
|
|
1. **إنشاء فرع**. سترغب في أن تطلب منهم إنشاء _فرع_ لعملهم.
|
|
|
1. **التركيز على تغيير واحد**. اطلب من المساهمين التركيز على مساهماتهم في شيء واحد في كل مرة - بهذه الطريقة تكون فرصتك في _دمج_ عملهم أعلى. تخيل أنهم كتبوا إصلاحًا لخلل، وأضافوا ميزة جديدة، وقاموا بتحديث عدة اختبارات - ماذا لو كنت تريد، أو يمكنك فقط تنفيذ 2 من 3، أو 1 من 3 تغييرات؟
|
|
|
|
|
|
✅ تخيل موقفًا تكون فيه الفروع ضرورية بشكل خاص لكتابة الكود الجيد وإصداره. ما هي حالات الاستخدام التي يمكنك التفكير فيها؟
|
|
|
|
|
|
> ملاحظة، كن التغيير الذي تريد رؤيته في العالم، وأنشئ فروعًا لعملك الخاص أيضًا. أي التزامات تقوم بها سيتم إجراؤها على الفرع الذي تم "التحقق منه" حاليًا. استخدم `git status` لمعرفة الفرع الذي تعمل عليه.
|
|
|
|
|
|
لنمر عبر سير عمل المساهم. افترض أن المساهم قد قام بالفعل بـ _استنساخ_ و_استنساخ محلي_ للمستودع بحيث يكون لديهم مستودع Git جاهز للعمل عليه على جهازهم المحلي:
|
|
|
|
|
|
1. **إنشاء فرع**. استخدم الأمر `git branch` لإنشاء فرع يحتوي على التغييرات التي ينوون المساهمة بها:
|
|
|
|
|
|
```bash
|
|
|
git branch [branch-name]
|
|
|
```
|
|
|
|
|
|
1. **التبديل إلى الفرع العامل**. قم بالتبديل إلى الفرع المحدد وقم بتحديث الدليل العامل باستخدام `git switch`:
|
|
|
|
|
|
```bash
|
|
|
git switch [branch-name]
|
|
|
```
|
|
|
|
|
|
1. **العمل**. في هذه المرحلة، تريد إضافة تغييراتك. لا تنسَ إخبار Git بذلك باستخدام الأوامر التالية:
|
|
|
|
|
|
```bash
|
|
|
git add .
|
|
|
git commit -m "my changes"
|
|
|
```
|
|
|
|
|
|
تأكد من إعطاء التزامك اسمًا جيدًا، من أجلك ومن أجل مشرف المستودع الذي تساعده.
|
|
|
|
|
|
1. **دمج عملك مع فرع `main`**. في مرحلة ما، تكون قد انتهيت من العمل وترغب في دمج عملك مع عمل فرع `main`. قد يكون فرع `main` قد تغير في هذه الأثناء، لذا تأكد من تحديثه إلى أحدث إصدار باستخدام الأوامر التالية:
|
|
|
|
|
|
```bash
|
|
|
git switch main
|
|
|
git pull
|
|
|
```
|
|
|
|
|
|
في هذه المرحلة، تريد التأكد من أن أي _تعارضات_، وهي الحالات التي لا يستطيع Git فيها بسهولة _دمج_ التغييرات، تحدث في فرع العمل الخاص بك. لذلك، قم بتشغيل الأوامر التالية:
|
|
|
|
|
|
```bash
|
|
|
git switch [branch_name]
|
|
|
git merge main
|
|
|
```
|
|
|
|
|
|
سيؤدي هذا إلى جلب جميع التغييرات من `main` إلى فرعك، ونأمل أن تتمكن من المتابعة. إذا لم يكن الأمر كذلك، فسيخبرك VS Code بالمكان الذي يكون فيه Git _مرتبكًا_، وستقوم فقط بتعديل الملفات المتأثرة لتحديد المحتوى الأكثر دقة.
|
|
|
|
|
|
1. **إرسال عملك إلى GitHub**. إرسال عملك إلى GitHub يعني شيئين: دفع فرعك إلى مستودعك وفتح طلب سحب (PR).
|
|
|
|
|
|
```bash
|
|
|
git push --set-upstream origin [branch-name]
|
|
|
```
|
|
|
|
|
|
ينشئ الأمر أعلاه الفرع على مستودعك المستنسخ.
|
|
|
|
|
|
1. **فتح طلب سحب (PR)**. بعد ذلك، تريد فتح طلب سحب. يمكنك القيام بذلك عن طريق الانتقال إلى المستودع المستنسخ على GitHub. سترى مؤشرًا على GitHub يسألك عما إذا كنت تريد إنشاء طلب سحب جديد، انقر على ذلك وستنتقل إلى واجهة حيث يمكنك تغيير عنوان رسالة الالتزام، وإعطائها وصفًا أكثر ملاءمة. الآن سيرى مشرف المستودع الذي استنسخته هذا الطلب و_بإذن الله_ سيقدر ذلك و_يدمج_ طلبك. أنت الآن مساهم، تهانينا :)
|
|
|
|
|
|
1. **تنظيف العمل**. يُعتبر تنظيف العمل بعد دمج طلب السحب بنجاح ممارسة جيدة. تريد تنظيف الفرع المحلي الخاص بك والفرع الذي دفعته إلى GitHub. أولاً، احذف الفرع محليًا باستخدام الأمر التالي:
|
|
|
|
|
|
```bash
|
|
|
git branch -d [branch-name]
|
|
|
```
|
|
|
|
|
|
تأكد من الانتقال إلى صفحة GitHub الخاصة بالمستودع المستنسخ بعد ذلك وإزالة الفرع البعيد الذي دفعته إليه.
|
|
|
`Pull request` يبدو كأنه مصطلح غريب لأنه في الواقع تريد دفع تغييراتك إلى المشروع. ولكن يحتاج المسؤول (مالك المشروع) أو الفريق الأساسي إلى مراجعة تغييراتك قبل دمجها مع الفرع "الرئيسي" للمشروع، لذا فأنت في الحقيقة تطلب قرارًا بشأن التغيير من المسؤول.
|
|
|
|
|
|
`Pull request` هو المكان الذي يتم فيه مقارنة ومناقشة الفروقات التي تم إدخالها على فرع معين مع المراجعات، التعليقات، الاختبارات المدمجة، والمزيد. `Pull request` الجيد يتبع تقريبًا نفس القواعد التي يتبعها رسالة الالتزام (commit message). يمكنك إضافة إشارة إلى مشكلة في متتبع المشاكل، على سبيل المثال عندما تقوم بحل مشكلة معينة. يتم ذلك باستخدام `#` متبوعًا برقم المشكلة. على سبيل المثال: `#97`.
|
|
|
|
|
|
🤞نتمنى أن تجتاز جميع الفحوصات وأن يقوم مالك المشروع بدمج تغييراتك في المشروع🤞
|
|
|
|
|
|
قم بتحديث الفرع المحلي الحالي الخاص بك بجميع الالتزامات الجديدة من الفرع البعيد المقابل على GitHub:
|
|
|
|
|
|
`git pull`
|
|
|
|
|
|
## كيفية المساهمة في المصادر المفتوحة
|
|
|
|
|
|
أولاً، دعنا نجد مستودعًا (**repo**) على GitHub يثير اهتمامك وترغب في المساهمة فيه. ستحتاج إلى نسخ محتوياته إلى جهازك.
|
|
|
|
|
|
✅ طريقة جيدة للعثور على مستودعات مناسبة للمبتدئين هي [البحث باستخدام الوسم 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/).
|
|
|
|
|
|

|
|
|
|
|
|
هناك عدة طرق لنسخ الكود. إحدى الطرق هي "استنساخ" محتويات المستودع باستخدام HTTPS، SSH، أو باستخدام GitHub CLI (واجهة سطر الأوامر).
|
|
|
|
|
|
افتح الطرفية الخاصة بك واستنسخ المستودع كالتالي:
|
|
|
`git clone https://github.com/ProjectURL`
|
|
|
|
|
|
للعمل على المشروع، انتقل إلى المجلد الصحيح:
|
|
|
`cd ProjectURL`
|
|
|
|
|
|
يمكنك أيضًا فتح المشروع بالكامل باستخدام [Codespaces](https://github.com/features/codespaces)، محرر الكود المدمج / بيئة التطوير السحابية من GitHub، أو [GitHub Desktop](https://desktop.github.com/).
|
|
|
|
|
|
وأخيرًا، يمكنك تنزيل الكود في مجلد مضغوط.
|
|
|
|
|
|
### بعض الأمور المثيرة للاهتمام حول GitHub
|
|
|
|
|
|
يمكنك وضع نجمة، متابعة، أو "تفرع" أي مستودع عام على GitHub. يمكنك العثور على المستودعات التي وضعت لها نجمة في القائمة المنسدلة في الزاوية العلوية اليمنى. يشبه ذلك الإشارات المرجعية، ولكن للكود.
|
|
|
|
|
|
تحتوي المشاريع على متتبع مشاكل، غالبًا على GitHub في علامة التبويب "Issues" ما لم يُذكر خلاف ذلك، حيث يناقش الأشخاص المشاكل المتعلقة بالمشروع. وعلامة التبويب Pull Requests هي المكان الذي يناقش فيه الأشخاص ويقومون بمراجعة التغييرات التي قيد التنفيذ.
|
|
|
|
|
|
قد تحتوي المشاريع أيضًا على مناقشات في المنتديات، قوائم بريدية، أو قنوات دردشة مثل Slack، Discord، أو IRC.
|
|
|
|
|
|
✅ ألقِ نظرة حول المستودع الجديد الخاص بك على GitHub وجرب بعض الأشياء، مثل تعديل الإعدادات، إضافة معلومات إلى المستودع، وإنشاء مشروع (مثل لوحة Kanban). هناك الكثير لتفعله!
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 التحدي
|
|
|
|
|
|
تعاون مع صديق للعمل على كود بعضكما البعض. أنشئ مشروعًا بشكل تعاوني، قم بتفرع الكود، أنشئ فروعًا، وادمج التغييرات.
|
|
|
|
|
|
## اختبار ما بعد المحاضرة
|
|
|
[اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/web/en/)
|
|
|
|
|
|
## المراجعة والدراسة الذاتية
|
|
|
|
|
|
اقرأ المزيد عن [المساهمة في برمجيات المصادر المفتوحة](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution).
|
|
|
|
|
|
[ورقة غش Git](https://training.github.com/downloads/github-git-cheat-sheet/).
|
|
|
|
|
|
مارس، مارس، مارس. GitHub يقدم مسارات تعليمية رائعة عبر [skills.github.com](https://skills.github.com):
|
|
|
|
|
|
- [الأسبوع الأول على GitHub](https://skills.github.com/#first-week-on-github)
|
|
|
|
|
|
ستجد أيضًا دورات أكثر تقدمًا.
|
|
|
|
|
|
## الواجب
|
|
|
|
|
|
أكمل [دورة الأسبوع الأول على GitHub](https://skills.github.com/#first-week-on-github)
|
|
|
|
|
|
---
|
|
|
|
|
|
**إخلاء المسؤولية**:
|
|
|
تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة. |