إنشاء وإدارة المستودعات
المستودع (أو "repo") هو أساس أي مشروع على GitHub. يحتوي على جميع ملفات مشروعك، ويتتبع تاريخها، ويمكّن التعاون. في هذا الدرس، سنتعلم كيفية إنشاء المستودعات على GitHub، وتكوينها بشكل صحيح، وإدارة إعدادات المستودع المهمة.
إنشاء مستودع جديد على GitHub
هناك طرق متعددة لإنشاء مستودع على GitHub:
الطريقة 1: واجهة ويب GitHub
1. سجل الدخول إلى GitHub.com
2. انقر على أيقونة "+" في الزاوية العلوية اليمنى
3. حدد "New repository"
4. املأ تفاصيل المستودع:
- اسم المستودع (مطلوب)
- الوصف (اختياري لكن موصى به)
- عام أو خاص
- التهيئة باستخدام README (اختياري)
- إضافة .gitignore (اختياري)
- اختر ترخيصاً (اختياري)
5. انقر على "Create repository"
الطريقة 2: GitHub CLI
# إنشاء مستودع عام
gh repo create my-project --public
# إنشاء مستودع خاص
gh repo create my-project --private
# إنشاء مع README واستنساخ محلياً
gh repo create my-project --public --clone
# الوضع التفاعلي (يطرح أسئلة)
gh repo create
اتفاقية التسمية: استخدم الأحرف الصغيرة والأرقام والشرطات. تجنب المسافات والأحرف الخاصة. أمثلة: my-awesome-project، portfolio-website، react-todo-app
خيارات تهيئة المستودع
عند إنشاء مستودع، لديك عدة خيارات للتهيئة:
التهيئة باستخدام README:
- ينشئ ملف README.md تلقائياً
- موصى به للمشاريع الجديدة
- يسمح بالاستنساخ الفوري
- يوفر نقطة بداية للتوثيق
إضافة .gitignore:
- قواعد التجاهل المستندة إلى القوالب
- قوالب خاصة باللغة (Node، Python، Java، إلخ)
- يمنع الالتزام بالملفات غير المرغوب فيها
- حدد بناءً على نوع مشروعك
اختر ترخيصاً:
- يحدد كيف يمكن للآخرين استخدام كودك
- مطلوب لمشاريع المصدر المفتوح
- التراخيص الشائعة: MIT، Apache 2.0، GPL v3
- يمكن إضافته لاحقاً إذا كنت غير متأكد
أفضل ممارسات README.md
README هو أول شيء يراه الناس عند زيارة مستودعك. اجعله مهماً:
أقسام README الأساسية:
# عنوان المشروع
وصف موجز لما يفعله المشروع
## الميزات
- ميزة 1
- ميزة 2
- ميزة 3
## التثبيت
```bash
npm install my-project
```
## الاستخدام
```javascript
const project = require('my-project');
project.doSomething();
```
## المساهمة
إرشادات للمساهمين
## الترخيص
ترخيص MIT - انظر ملف LICENSE
## الاتصال
اسمك - [@twitter](https://twitter.com/handle)
عناصر README المتقدمة:
# الشارات


# لقطات الشاشة

# جدول المحتويات
- [التثبيت](#installation)
- [الاستخدام](#usage)
- [API](#api)
# أمثلة الكود
أمثلة مفصلة مع تمييز البنية
# قسم الأسئلة الشائعة
أسئلة شائعة وإجابات
# الشكر والتقدير
الاعتمادات والشكر
نصيحة Markdown: تستخدم ملفات README تنسيق Markdown. تعلم بناء الجملة الأساسي: العناوين (#)، القوائم (-)، كتل الكود (```)، الروابط، الصور، والجداول للتوثيق الاحترافي.
اختيار الترخيص المناسب
التراخيص تحميك وتخبر الآخرين كيف يمكنهم استخدام كودك:
ترخيص MIT:
- الأكثر تساهلاً وشعبية
- يسمح بالاستخدام التجاري
- لا مسؤولية على المؤلف
- رائع لمشاريع المصدر المفتوح
ترخيص Apache 2.0:
- مشابه لـ MIT
- يتضمن منح براءة اختراع
- يتطلب الإسناد
- تستخدمه مشاريع Apache Foundation
GNU GPL v3:
- ترخيص Copyleft
- يجب أن تكون المشتقات مفتوحة المصدر
- يضمن حرية البرمجيات
- تستخدمه نواة Linux
بدون ترخيص:
- افتراضي: جميع الحقوق محفوظة
- لا يمكن للآخرين استخدام كودك بشكل قانوني
- غير موصى به للمستودعات العامة
- المستودعات الخاصة لا تحتاج إلى ترخيص
دليل سريع: تريد بسيطاً ومتساهلاً؟ استخدم MIT. تريد ضمان بقاء المشتقات مفتوحة؟ استخدم GPL. بناء مكتبة؟ فكر في Apache. قم بزيارة choosealicense.com للحصول على إرشادات مفصلة.
قوالب .gitignore
ملف .gitignore يخبر Git بالملفات التي لا يجب تتبعها أبداً:
مثال .gitignore لـ Node.js:
# التبعيات
node_modules/
npm-debug.log
# متغيرات البيئة
.env
.env.local
# مخرجات البناء
dist/
build/
*.min.js
# ملفات IDE
.vscode/
.idea/
*.swp
# ملفات نظام التشغيل
.DS_Store
Thumbs.db
# الاختبار
coverage/
*.test.js.snap
مثال .gitignore لـ Python:
# ملفات مترجمة بايت
__pycache__/
*.py[cod]
*$py.class
# البيئات الافتراضية
venv/
env/
ENV/
# التوزيع
dist/
build/
*.egg-info/
# الاختبار
.pytest_cache/
.coverage
htmlcov/
# IDE
.vscode/
.idea/
*.swp
مهم: لا تلتزم أبداً بمعلومات حساسة مثل مفاتيح API أو كلمات المرور أو بيانات اعتماد قاعدة البيانات أو المفاتيح الخاصة. أضفها إلى .gitignore فوراً.
إعدادات المستودع
بعد إنشاء مستودع، قم بتكوين الإعدادات المهمة:
الإعدادات العامة (Settings ← General):
اسم المستودع:
- يمكن تغييره لاحقاً
- سيكسر عناوين URL الاستنساخ الموجودة
- يحدّث جميع ميزات GitHub تلقائياً
الوصف:
- يظهر على صفحة المستودع
- يساعد في البحث والاكتشاف
- يمكن أن يتضمن رموز تعبيرية
المواضيع (العلامات):
- أضف كلمات رئيسية ذات صلة
- يحسن القابلية للاكتشاف
- أمثلة: javascript، web-development، react
الميزات:
☑ Issues - تتبع الأخطاء والميزات
☑ Projects - تنظيم العمل
☐ Wiki - توثيق إضافي
☑ Discussions - محادثات المجتمع
قواعد حماية الفرع:
حماية الفرع الرئيسي:
- طلب مراجعات طلبات السحب
- طلب نجاح فحوصات الحالة
- طلب تحديث الفروع
- تقييد من يمكنه الدفع
- طلب التوقيع على الالتزامات
انتقل إلى: Settings ← Branches ← Add rule
- نمط اسم الفرع: main
- ☑ Require pull request before merging
- ☑ Require approvals (1-6 reviewers)
- ☑ Require status checks to pass
جعل المستودعات عامة أو خاصة
يمكنك تغيير رؤية المستودع في أي وقت:
المستودعات العامة:
✓ مرئية للجميع على الإنترنت
✓ تظهر في محركات البحث
✓ يمكن لأي شخص الاستنساخ والتفرع
✓ رائع للمصدر المفتوح
✓ يبني محفظتك
✗ الكود متاح للعامة
المستودعات الخاصة:
✓ مرئية فقط لك وللمتعاونين
✓ إخفاء الكود من العرض العام
✓ مناسب للمشاريع التجارية
✓ مجاني مع خطة GitHub Free
✗ لا يبني محفظة عامة
✗ متعاونون محدودون في الخطة المجانية
تغيير الرؤية:
Settings ← Danger Zone ← Change visibility
⚠ كن حذراً! جعله عاماً لا يمكن التراجع عنه بسهولة
GitHub Free: يقدم مستودعات خاصة غير محدودة مع متعاونين غير محدودين. لا حاجة لخطط مدفوعة إلا إذا كنت بحاجة إلى ميزات متقدمة.
نقل ملكية المستودع
في بعض الأحيان تحتاج إلى نقل مستودع إلى مستخدم أو منظمة أخرى:
نقل المستودع:
1. انتقل إلى إعدادات المستودع
2. مرر إلى "Danger Zone"
3. انقر على "Transfer ownership"
4. أدخل اسم المستخدم أو المنظمة الجديدة
5. اكتب اسم المستودع للتأكيد
6. انقر على "I understand, transfer this repository"
ما يتم نقله:
✓ كود المستودع والتاريخ
✓ القضايا وطلبات السحب
✓ الإصدارات والوسوم
✓ Wiki والمناقشات
✓ سير عمل GitHub Actions
ما لا يتم نقله:
✗ النجوم والمراقبون
✗ التفرعات (تبقى تحت المالك الأصلي)
✗ مفاتيح النشر والأسرار
✗ Webhooks
أرشفة المستودعات
أرشف المشاريع القديمة التي لم تعد تحتفظ بها:
أرشفة مستودع:
Settings ← Danger Zone ← Archive repository
تأثيرات الأرشفة:
- يصبح المستودع للقراءة فقط
- لا قضايا أو PRs أو التزامات جديدة مسموح بها
- يبقى المحتوى الموجود مرئياً
- لا يزال يمكن تفرعه واستنساخه
- يظهر شعار "This repo is archived"
- يمكن إلغاء الأرشفة لاحقاً
متى تؤرشف:
- المشروع مكتمل ولن يتم تحديثه
- مشاريع مهجورة
- استبدلت بإصدار أحدث
- مرجع تاريخي فقط
حذف المستودعات
احذف المستودعات التي لم تعد بحاجة إليها بشكل دائم:
حذف مستودع:
Settings ← Danger Zone ← Delete this repository
⚠ تحذير: هذا الإجراء دائم!
- يُفقد جميع الكود والتاريخ إلى الأبد
- لا يمكن استرداده بواسطة دعم GitHub
- تُحذف جميع القضايا وPRs
- تصبح جميع التفرعات مستقلة
- تُحذف الإصدارات والأصول
قبل الحذف:
1. تصدير/نسخ احتياطي إذا كنت قد تحتاجه
2. أخطر المتعاونين
3. تحقق من التبعيات
4. فكر في الأرشفة بدلاً من ذلك
5. اكتب اسم المستودع للتأكيد
حرج: حذف المستودع دائم ولا رجعة فيه. قم دائماً بإنشاء نسخة احتياطية قبل الحذف. فكر في الأرشفة بدلاً من ذلك إذا كنت غير متأكد.
استنساخ مستودعك الجديد
بعد إنشاء مستودع على GitHub، استنسخه محلياً:
# استنساخ عبر HTTPS
git clone https://github.com/username/repo-name.git
# استنساخ عبر SSH (موصى به)
git clone git@github.com:username/repo-name.git
# استنساخ إلى دليل محدد
git clone git@github.com:username/repo-name.git my-folder
# استنساخ فرع محدد
git clone -b develop git@github.com:username/repo.git
# تحقق من اتصال البعيد
cd repo-name
git remote -v
ربط مستودع محلي موجود بـ GitHub
إذا كان لديك بالفعل مستودع Git محلي:
# أنشئ مستودعاً فارغاً على GitHub أولاً (بدون README/ترخيص)
# أضف GitHub كبعيد
git remote add origin git@github.com:username/repo-name.git
# تحقق من إضافة البعيد
git remote -v
# ادفع كودك إلى GitHub
git push -u origin main
# إذا كان لديك اسم فرع مختلف:
git branch -M main # أعد تسمية الفرع الحالي إلى main
git push -u origin main
تمرين عملي:
إنشاء وتكوين مستودع:
- أنشئ مستودعاً عاماً جديداً باسم "my-first-repo"
- هيئه باستخدام README و .gitignore (اختر قالباً) وترخيص MIT
- حرر README ليتضمن:
- عنوان المشروع ووصفه
- تعليمات التثبيت
- معلومات الاتصال الخاصة بك
- أضف 3-5 مواضيع/علامات ذات صلة للمستودع
- استنسخ المستودع إلى جهازك المحلي
- أنشئ ملفاً جديداً محلياً، التزم به، وادفعه إلى GitHub
- استكشف إعدادات المستودع
- قم بإعداد قاعدة حماية الفرع للفرع الرئيسي
الملخص
في هذا الدرس، تعلمت:
- كيفية إنشاء المستودعات على GitHub باستخدام واجهة الويب أو CLI
- يجب أن تكون ملفات README.md شاملة ومنظمة بشكل جيد
- اختر التراخيص المناسبة بناءً على كيفية استخدام الكود
- ملفات .gitignore تمنع تتبع الملفات غير المرغوب فيها
- إعدادات المستودع تتحكم في الرؤية والميزات والحماية
- يمكن نقل المستودعات أو أرشفتها أو حذفها
- ربط مستودعات Git المحلية بـ GitHub كبعيد
التالي: في الدرس التالي، سنستكشف GitHub Issues - نظام قوي لتتبع الأخطاء والميزات ومهام المشروع!