GitHub والمستودعات البعيدة: كودك في السحابة
ننتقل من العمل المحلي إلى العمل الجماعي: نفهم ما هو المستودع البعيد، وكيفية ربط المستودع المحلي بـ GitHub، والفرق بين push و pull و fetch — ثلاثة أوامر يتم الخلط بينها كثيرًا. وسننظر بشكل منفصل في المصادقة عبر مفاتيح SSH، لأن أرباب العمل يتوقعون منك إعداد ذلك بنفسك.
- ستتمكن من إنشاء مستودع على GitHub وربطه بمشروعك المحلي ونشر التغييرات باستخدام أمر push.
- ستفهم الفرق بين fetch و pull وستختار بينهما بوعي في العمل الجماعي.
- ستقوم بإعداد مصادقة SSH مع GitHub بدون كلمات مرور — كما يفعل المحترفون.
จุดเริ่มต้นของบทเรียน
لماذا نحتاج إلى مستودعات بعيدة؟
- المستودع المحلي موجود فقط على جهازك
- المستودع البعيد مساحة تخزين سحابية للفريق
- يمكن للجميع رؤية التغييرات وإضافتها من مكان واحد
- تتم المزامنة عبر الإنترنت في الوقت الفعلي
تخيّل أنك تعمل على مشروع بمفردك؛ في هذه الحالة، قد يكون تخزين Git المحلي كافيًا. لكن عندما ينضم فريق إلى العمل، تظهر الحاجة إلى مساحة مشتركة. هنا يصبح المستودع البعيد نقطة مركزية لحفظ الكود، يستطيع كل فرد في الفريق الوصول إليها. يشبه ذلك مستندات Google، حيث تظهر التعديلات وتتم مزامنتها في الوقت الفعلي. يمكنك رؤية تغييرات زملائك، ومناقشة الكود عبر طلبات الدمج، والعمل على ميزات مختلفة في الوقت نفسه. بدون مستودع بعيد، قد يتحول العمل الجماعي إلى فوضى من الأرشيفات المرسلة والنسخ المتعددة من الملفات.
كيف يرتبط التخزين المحلي بالتخزين البعيد؟
- Origin هو الاسم الافتراضي للمستودع البعيد
- Push يعني إرسال التغييرات إلى الخادم
- Pull يعني جلب التغييرات من الخادم
- كل مستودع مستقل ويحتوي على السجل الكامل للتغييرات
يتبادل المستودع المحلي على جهازك البيانات مع المستودع البعيد عبر أمرين أساسيين: push وpull. افتراضيًا، يُسمّى المستودع البعيد الرئيسي origin. لكن من المهم أن تفهم أن الأمر لا يتعلق بمجرد نسخ الملفات. فكل مستودع مستقل ويحتوي على السجل الكامل للتغييرات. عندما تنشئ commits محليًا، تبقى عندك فقط إلى أن ترسلها باستخدام push. وعندما يحدّث زملاؤك الكود، تجلب هذه التغييرات باستخدام pull حتى تزامن عملك معهم.
مستودع محلي واحد وعدة مستودعات بعيدة
- يمكن ربط عدة مستودعات بعيدة بالمستودع المحلي
- Origin هو نسختك الشخصية من المشروع على GitHub
- Upstream هو المستودع الأصلي للمشروع
- يمكن مزامنة التغييرات بينهما بسهولة
يمكن ربط مشروعك بأكثر من مستودع بعيد في الوقت نفسه. مثلًا، origin قد يكون نسختك الشخصية من المشروع على GitHub، بينما upstream هو المستودع الأصلي للمشروع. هذا الإعداد يسمح لك بإجراء التغييرات على نسختك الخاصة، مع إمكانية جلب التحديثات من المصدر الأصلي بسهولة. وهذا مفيد جدًا عند العمل على مشاريع مفتوحة المصدر، حيث تحتاج إلى إبقاء نسختك محدثة. أنت تقرر متى وأي تغييرات تجلبها من upstream إلى origin. والآن بعد أن فهمنا طريقة العمل مع المستودعات البعيدة، حان وقت إنشاء مستودعنا الخاص على GitHub، وسنفعل ذلك الآن.
# نضيف مستودعًا بعيدًا جديدًا
git remote add upstream https://github.com/original/project.git
# نعرض قائمة بجميع المستودعات البعيدة
git remote -v
# نجلب التغييرات من upstream إلى الفرع المحلي
git fetch upstream
git checkout main
git merge upstream/main
# نرسل التغييرات إلى origin الخاص بنا
git push origin main
บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก
ฉบับเต็มมีสไลด์เพิ่มอีก 30 สไลด์
วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก
เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิกเนื้อหาบทเรียน
- لماذا نحتاج إلى مستودعات بعيدة؟
- كيف يرتبط التخزين المحلي بالتخزين البعيد؟
- مستودع محلي واحد وعدة مستودعات بعيدة
- إنشاء مستودع جديد على GitHub
- ملف README والترخيص: أول commit لك
- ربط المستودع المحلي بـ GitHub
- ما المقصود باستنساخ مستودع؟
- طريقتان للاستنساخ: HTTPS وSSH
- تمرين عملي: نستنسخ مستودعًا
- نتحقق من الإعدادات بعد الاستنساخ
- لماذا كلمات المرور غير مناسبة لـ GitHub
- كيف تعمل مفاتيح SSH
- ننشئ مفتاح SSH
- نضيف المفتاح إلى GitHub
- نرسل الكود إلى السحابة: git push
- إعداد فرع التتبع (upstream)
- حل التعارضات عند الرفع (push)
- git pull: مزامنة العمل مع السحابة
- كيف يعمل git pull داخليًا
- مشكلات شائعة مع git pull
- لماذا قد يكون git pull خطيرًا
- git fetch: جلب آمن للتغييرات
- تمرين: عرض التغييرات عبر fetch
- متى تستخدم fetch بدلًا من pull
- رفع التغييرات إلى فرع شخص آخر: لماذا يعطّل سير العمل
- الطريقة الصحيحة: أنشئ فرعك الخاص للتغييرات
- كارثة صامتة: عندما يمحو pull تغييراتك
- الأمر المنقذ: git stash أثناء العمل
- GitHub: خزانة كودك السحابية
- إعداد مفتاح SSH: تصريحك الرقمي
- من Fork إلى Pull Request: العمل ضمن فريق
- طلب السحب Pull Request: الفكرة والفرق عن push العادي
- الخلاصة والمهمة
บทความเกี่ยวกับบทเรียนนี้
- Git และ GitHub: ต่างกันอย่างไร และเชื่อมโยงกันอย่างไร
- git fetch และ git pull: ต่างกันอย่างไร และควรเลือกอะไร
- คำสั่ง Git: ชีตสรุปพร้อมตัวอย่างสำหรับใช้ทุกวัน
- รีโพซิทอรี Git: สร้างด้วย git init และเชื่อม remote อย่างไร
- git clone: วิธีโคลนรีโพซิทอรีจาก GitHub และที่อื่น
บทเรียนทั้งหมดในคอร์สนี้
- مقدمة: Git من الصفر إلى مُطوّر محترف
- لماذا نحتاج إلى Git على الإطلاق — ولماذا لا يُقدّم عليك العمل دونه
- تثبيت وإعداد Git لأول استخدام
- المستودع الأول: init وadd وcommit وسحر الفهرس
- قراءة سجل المشروع: أوامر log و diff و show والتنقل في السجل
- الفروع: الواقع الموازي لرمزك البرمجي
- إلغاء الأخطاء: الأوامر restore، reset، revert — الاستخدام الصحيح والخطير
- GitHub والمستودعات البعيدة: كودك في السحابة
- العمل الجماعي: النسخ المتفرعة، الفروع المميزة وطلبات السحب
- نزاعات الدمج: لا داعي للذعر — افهمها وحُلّها
- سير عمل Git في الفرق الحقيقية: أي سير عمل تختار
- الأدوات المتقدمة: rebase، stash، cherry-pick والعلامات (tags)
- المشروع النهائي: محاكاة التطوير الجماعي الفعلي