الهدف: إبقاء شفرتك المحلية متزامنة مع GitHub.
المشكلة:
الحل: الدفع (أنت → GitHub) والسحب (GitHub → أنت)
mkdir demo-github-sync && cd demo-github-sync
git init
echo "print('v1')" > app.py
echo "# Demo GitHub Sync" > README.md
git add . && git commit -m "Initial commit"
# الربط بـ GitHub (استبدل بمستودعك)
git remote add origin https://github.com/ton-username/demo-repo.git
# أول دفع
git push -u origin mainهذا كل شيء! شفرتك على GitHub.
سيناريو نموذجي:
# تعدّل محلياً
echo "print('v2 updated')" > app.py
git add . && git commit -m "Update to v2"
# الإرسال نحو GitHub
git push origin main# استرجاع تغييرات الفريق
git pull origin main
# أو على مرحلتين:
git fetch origin # تنزيل بلا دمج
git merge origin/main # الدمج بعد ذلك# صباحاً: استرجاع عمل الفريق
git pull
# النهار: تطوّر
echo "print('new feature')" >> app.py
git add . && git commit -m "Add feature"
# مساءً: دفع عملك
git pushتعارض = أنت وزميل تعدّلان السطر نفسه.
# زميل عدّل app.py على GitHub
# وأنت أيضاً محلياً
echo "print('my version')" > app.py
git add . && git commit -m "My changes"
git pull # تعارض!# Git يعرض التعارض في app.py:
# <<<<<<< HEAD
# print('my version')
# =======
# print('colleague version')
# >>>>>>> abc123
# حرّر الملف لتُبقي ما تريد:
echo "print('merged version')" > app.py
# إنهاء الحل:
git add app.py
git commit -m "Resolve conflict"
git pushحُلّ التعارض! يسترجع الفريق نسختك المدموجة.
| الأمر | الإجراء |
|---|---|
git clone <url> | نسخ مستودع GitHub |
git remote add origin <url> | الربط بـ GitHub |
git push -u origin main | أول دفع (مع التتبّع) |
git push | إرسال إيداعاتك |
git pull | استرجاع + دمج |
git fetch | استرجاع بلا دمج |
git status | عرض حالة المزامنة |
git pull (الاسترجاع)git add + git commitgit push (المشاركة)مزامنة GitHub = تنفّس المطوّر: سحب → شفرة → دفع!