GitHub والمستودعات البعيدة: كودك في السحابة
ننتقل من العمل المحلي إلى العمل الجماعي: نفهم ما هو المستودع البعيد، وكيفية ربط المستودع المحلي بـ GitHub، والفرق بين push و pull و fetch — ثلاثة أوامر يتم الخلط بينها كثيرًا. وسننظر بشكل منفصل في المصادقة عبر مفاتيح SSH، لأن أرباب العمل يتوقعون منك إعداد ذلك بنفسك.
- ستتمكن من إنشاء مستودع على GitHub وربطه بمشروعك المحلي ونشر التغييرات باستخدام أمر push.
- ستفهم الفرق بين fetch و pull وستختار بينهما بوعي في العمل الجماعي.
- ستقوم بإعداد مصادقة SSH مع GitHub بدون كلمات مرور — كما يفعل المحترفون.
Phần đầu bài giảng
لماذا نحتاج إلى مستودعات بعيدة؟
- المستودع المحلي موجود فقط على جهازك
- المستودع البعيد مساحة تخزين سحابية للفريق
- يمكن للجميع رؤية التغييرات وإضافتها من مكان واحد
- تتم المزامنة عبر الإنترنت في الوقت الفعلي
تخيّل أنك تعمل على مشروع بمفردك؛ في هذه الحالة، قد يكون تخزين 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
Bài giảng đầy đủ dành cho thuê bao
Còn 30 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- لماذا نحتاج إلى مستودعات بعيدة؟
- كيف يرتبط التخزين المحلي بالتخزين البعيد؟
- مستودع محلي واحد وعدة مستودعات بعيدة
- إنشاء مستودع جديد على 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 العادي
- الخلاصة والمهمة
Bài viết liên quan đến bài học này
- Git và GitHub: khác nhau thế nào và liên hệ ra sao
- git fetch và git pull: khác nhau thế nào và nên chọn cái nào
- Lệnh Git: bảng tra cứu với ví dụ dùng hằng ngày
- Kho lưu trữ Git: cách tạo bằng git init và kết nối remote
- git clone: cách sao chép kho lưu trữ từ GitHub và nơi khác
Tất cả bài giảng của khóa học
- مقدمة: Git من الصفر إلى مُطوّر محترف
- لماذا نحتاج إلى Git على الإطلاق — ولماذا لا يُقدّم عليك العمل دونه
- تثبيت وإعداد Git لأول استخدام
- المستودع الأول: init وadd وcommit وسحر الفهرس
- قراءة سجل المشروع: أوامر log و diff و show والتنقل في السجل
- الفروع: الواقع الموازي لرمزك البرمجي
- إلغاء الأخطاء: الأوامر restore، reset، revert — الاستخدام الصحيح والخطير
- GitHub والمستودعات البعيدة: كودك في السحابة
- العمل الجماعي: النسخ المتفرعة، الفروع المميزة وطلبات السحب
- نزاعات الدمج: لا داعي للذعر — افهمها وحُلّها
- سير عمل Git في الفرق الحقيقية: أي سير عمل تختار
- الأدوات المتقدمة: rebase، stash، cherry-pick والعلامات (tags)
- المشروع النهائي: محاكاة التطوير الجماعي الفعلي