GitHub: رفع المشروع بـ push وتحديثه بـ pull
حتى الآن، كل تاريخ مشروعك موجود على جهازك فقط. إذا تعطل الجهاز، ضاع كل شيء! وإذا أردت العمل مع صديق، أو من جهاز آخر، أو أن تعرض مشروعك على العالم، تحتاج نسخة على الإنترنت. هنا يأتي GitHub: أشهر منصة لاستضافة مستودعات Git. وفي هذا الدرس الأخير، ستتعلم أوامر التعامل مع المستودع البعيد (Remote).
إنشاء مستودع على GitHub
Section titled “إنشاء مستودع على GitHub”- أنشئ حساباً مجانياً على github.com (راجع شروط العمر في الموقع، وبعض المنصات تشترط موافقة ولي الأمر).
- اضغط زر New لإنشاء مستودع جديد.
- اكتب اسمه، مثل
my-site، واختر Public (عام) أو Private (خاص). - إذا كان عندك مستودع على جهازك بالفعل، لا تختر إضافة README من GitHub، لتبدأ بمستودع فارغ.
سيعرض لك GitHub رابط المستودع، مثل https://github.com/sara/my-site.git.
ربط المستودع المحلي: git remote
Section titled “ربط المستودع المحلي: git remote”داخل مجلد مشروعك:
git remote add origin https://github.com/sara/my-site.gitgit remote -vorigin https://github.com/sara/my-site.git (fetch)origin https://github.com/sara/my-site.git (push)git remote add: أضف مستودعاً بعيداً.origin: اسم مستعار للرابط، والعُرف أن يسمى المستودع الرئيسيorigin.-v: اعرض المستودعات البعيدة المرتبطة.
الرفع: git push
Section titled “الرفع: git push”git push -u origin mainTo https://github.com/sara/my-site.git * [new branch] main -> mainbranch 'main' set up to track 'origin/main'.push: ارفع نقاط الحفظ الجديدة من جهازك إلى المستودع البعيد.origin main: إلىorigin، الفرعmain.-u: اربط الفرع المحلي بالبعيد مرة واحدة. بعدها يكفي أن تكتبgit pushفقط.
افتح صفحة المستودع على GitHub، وستجد ملفاتك وتاريخها كاملاً!
نسخ مستودع: git clone
Section titled “نسخ مستودع: git clone”لتحميل مستودع موجود على GitHub إلى جهاز جديد، مثل حاسوبك المحمول، أو مشروع مفتوح المصدر تريد دراسته:
git clone https://github.com/sara/my-site.gitCloning into 'my-site'...done.clone تنزّل المستودع كاملاً بكل تاريخه، وتربطه تلقائياً بـ origin. لا تحتاج git init ولا git remote add.
جلب التحديثات: git pull
Section titled “جلب التحديثات: git pull”تخيّل أنك تعمل من جهازين: الكمبيوتر والحاسوب المحمول. عدّلت README.md على المحمول ورفعته بـ git push. الآن على الكمبيوتر:
git pullFrom https://github.com/sara/my-site e074d8f..52a9f5b main -> origin/mainUpdating e074d8f..52a9f5bFast-forward README.md | 1 + 1 file changed, 1 insertion(+)pull تجلب نقاط الحفظ الجديدة من المستودع البعيد، وتدمجها في فرعك الحالي. والآن الجهازان متطابقان.
تخيّل GitHub مثل سبورة مشتركة في الفصل: push تكتب عليها ما أنجزته، و pull تنقل منها ما كتبه الآخرون إلى دفترك.
الرفع المرفوض
Section titled “الرفع المرفوض”موقف يمر به كل مبرمج: صديقك رفع تعديلاً، وأنت لم تجلبه بعد، ثم حاولت الرفع:
git push ! [rejected] main -> main (fetch first)error: failed to push some refs to 'https://github.com/sara/my-site.git'hint: Updates were rejected because the remote contains work that you do nothint: have locally. This is usually caused by another repository pushing tohint: the same ref. If you want to integrate the remote changes, usehint: 'git pull' before pushing again.Git يحميك هنا: يرفض الرفع حتى لا تمحو عمل صديقك. والرسالة نفسها تخبرك بالحل:
git pullلجلب تعديلات صديقك ودمجها مع تعديلاتك.- إذا حدث تعارض، حلّه كما تعلمت في درس الفروع.
git pushمن جديد.
دورة العمل اليومية
Section titled “دورة العمل اليومية”git pull # ابدأ يومك بآخر التحديثات# ... اعمل وعدّل الملفات ...git add .git commit -m "وصف واضح"git push # شارك عملكوفي فرق العمل، يعمل كل شخص في فرع خاص، ثم يرفعه ويفتح على GitHub طلب دمج (Pull Request): صفحة يراجع فيها الزملاء التعديلات ويعلقون عليها قبل دمجها في main. هكذا يعمل ملايين المطورين حول العالم، وهكذا تُبنى المشاريع مفتوحة المصدر.
جرّب بنفسك
Section titled “جرّب بنفسك”- أنشئ حساباً على GitHub، ومستودعاً فارغاً جديداً.
- اربط مستودعك المحلي به بـ
git remote add origin، وارفعه بـgit push -u origin main. - عدّل ملف
README.mdمباشرة من موقع GitHub (زر القلم)، واحفظ. - على جهازك، اجلب التعديل بـ
git pull. - تحدٍّ: انسخ مستودعك في مجلد آخر بـ
git clone، وعدّل من النسختين، وجرّب الرفض ثم حله بـpull.
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان push: تعديلاتك محفوظة على جهازك فقط، ولا يراها أحد.
commitلا يرفع شيئاً. - العمل دون pull في البداية: تزيد فرص الرفض والتعارض. ابدأ دائماً بـ
git pull. - رفع الأسرار: راجع
.gitignoreقبل أولpush، فالمستودع العام يراه العالم كله.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما الفرق بين git commit و git push؟
commit ينشئ نقطة حفظ محلية، و push ينقل نقاط الحفظ الجديدة إلى GitHub.
سؤال
رُفض git push لأن المستودع البعيد فيه تعديلات ليست عندك. ما الحل الصحيح؟
pull يجلب تعديلات الآخرين ويدمجها مع عملك، ثم push يرفع الكل دون محو أي شيء.
الخلاصة
Section titled “الخلاصة”- GitHub يستضيف نسخة من مستودعك على الإنترنت للحماية والتعاون والعرض.
git remote add origin رابطيربط المستودع، وgit push -u origin mainيرفعه أول مرة.git cloneينسخ مستودعاً كاملاً بتاريخه، وgit pullيجلب التحديثات ويدمجها.- الرفع المرفوض يُحل بـ
pullثمpush، وليس بـ--force.