Git و GitHub

فهم المستودعات البعيدة

13 دقيقة الدرس 12 من 35

فهم المستودعات البعيدة

المستودعات البعيدة هي نسخ من مشروعك مستضافة على الإنترنت أو الشبكة. فهم كيفية العمل مع المستودعات البعيدة أمر ضروري للتعاون والنسخ الاحتياطي لعملك. في هذا الدرس، سنستكشف ما هي المستودعات البعيدة وكيفية إدارتها بفعالية.

ما هي المستودعات البعيدة؟

المستودع البعيد هو نسخة من مشروعك مستضافة في موقع آخر، عادةً على خادم يمكن الوصول إليه عبر الإنترنت. تتيح المستودعات البعيدة لعدة مطورين التعاون على نفس المشروع.

مفهوم أساسي: يمكن لمستودعك المحلي الاتصال بعدة مستودعات بعيدة، مما يتيح لك دفع وسحب التغييرات من وإلى مواقع مختلفة.

عرض المستودعات البعيدة

لرؤية المستودعات البعيدة المكونة لمشروعك:

# سرد جميع المستودعات البعيدة المكونة git remote # سرد المستودعات البعيدة مع عناوين URL الخاصة بها git remote -v # مثال على المخرجات: origin https://github.com/user/repo.git (fetch) origin https://github.com/user/repo.git (push) upstream https://github.com/original/repo.git (fetch) upstream https://github.com/original/repo.git (push)
نصيحة: علامة -v تعرض لك كلاً من عناوين URL للجلب والدفع لكل مستودع بعيد. عادةً ما تكون هذه متطابقة، ولكن يمكن أن تكون مختلفة إذا لزم الأمر.

فهم "Origin"

عند استنساخ مستودع، يقوم Git تلقائياً بتسمية المستودع البعيد "origin". هذا مجرد اتفاقية - ليس هناك شيء خاص بشأن اسم "origin":

# استنساخ مستودع git clone https://github.com/user/repo.git # ينشئ Git تلقائياً مستودعاً بعيداً باسم "origin" # يشير إلى المستودع المستنسخ git remote -v # origin https://github.com/user/repo.git (fetch) # origin https://github.com/user/repo.git (push)

إضافة مستودعات بعيدة

يمكنك إضافة مستودعات بعيدة جديدة إلى مستودعك المحلي:

# الصيغة الأساسية git remote add <name> <url> # إضافة مستودع بعيد باسم "upstream" git remote add upstream https://github.com/original/repo.git # إضافة مستودع بعيد باسم "backup" git remote add backup https://gitlab.com/user/repo.git # التحقق من إضافة المستودع البعيد git remote -v
الأسماء الشائعة:
  • origin - مستودعك البعيد الرئيسي (عادةً نسختك المتشعبة أو المستودع الرئيسي)
  • upstream - المستودع الأصلي (عند العمل مع النسخ المتشعبة)
  • backup - موقع نسخ احتياطي لكودك

إعادة تسمية المستودعات البعيدة

يمكنك إعادة تسمية مستودع بعيد إذا لزم الأمر:

# إعادة تسمية مستودع بعيد git remote rename <old-name> <new-name> # مثال: إعادة تسمية "origin" إلى "github" git remote rename origin github # التحقق من التغيير git remote -v

إزالة المستودعات البعيدة

لإزالة اتصال مستودع بعيد:

# إزالة مستودع بعيد git remote remove <name> # أو git remote rm <name> # مثال: إزالة المستودع البعيد backup git remote remove backup # التحقق من إزالته git remote -v
مهم: إزالة مستودع بعيد تزيل الاتصال فقط من مستودعك المحلي. لا تحذف المستودع البعيد نفسه أو تؤثر على المستخدمين الآخرين.

فحص المستودعات البعيدة

الحصول على معلومات مفصلة حول مستودع بعيد محدد:

# عرض معلومات مفصلة حول مستودع بعيد git remote show <name> # مثال: فحص origin git remote show origin # مثال على المخرجات: * remote origin Fetch URL: https://github.com/user/repo.git Push URL: https://github.com/user/repo.git HEAD branch: main Remote branches: main tracked develop tracked feature tracked Local branch configured for 'git pull': main merges with remote main Local ref configured for 'git push': main pushes to main (up to date)

فروع التتبع البعيدة

فروع التتبع البعيدة هي مراجع لحالة الفروع على مستودعاتك البعيدة. تأخذ الشكل <remote>/<branch>:

# سرد جميع الفروع بما في ذلك فروع التتبع البعيدة git branch -a # مثال على المخرجات: * main develop remotes/origin/main remotes/origin/develop remotes/origin/feature-login remotes/upstream/main
نصيحة: فروع التتبع البعيدة للقراءة فقط من منظورك. يتم تحديثها عند الجلب أو السحب من المستودع البعيد.

فهم فروع Upstream

فرع upstream هو الفرع البعيد الذي يتتبعه فرعك المحلي. هذه العلاقة تتيح لـ Git معرفة الفرع البعيد الذي يجب الدفع إليه أو السحب منه:

# عرض فرع upstream للفرع الحالي git branch -vv # مثال على المخرجات: * main abc1234 [origin/main] Latest commit develop def5678 [origin/develop: ahead 2] Work in progress feature ghi9012 No upstream configured # تعيين فرع upstream للفرع الحالي git branch --set-upstream-to=origin/main # أو تعيين upstream عند الدفع git push -u origin feature-branch

سير عمل المستودعات البعيدة المتعددة

سيناريو شائع هو العمل مع مستودعات بعيدة متعددة، خاصة عند المساهمة في المصادر المفتوحة:

سير عمل Fork النموذجي: 1. عمل Fork للمستودع الأصلي على GitHub 2. استنساخ النسخة المتشعبة: git clone https://github.com/YOUR_USERNAME/repo.git 3. إضافة المستودع الأصلي كـ "upstream": git remote add upstream https://github.com/ORIGINAL_OWNER/repo.git 4. الآن لديك مستودعان بعيدان: origin → نسختك المتشعبة (يمكنك الدفع هنا) upstream → المستودع الأصلي (للقراءة فقط بالنسبة لك) 5. جلب التحديثات من upstream: git fetch upstream 6. دمج التحديثات في فرعك المحلي: git merge upstream/main

تغيير عناوين URL البعيدة

يمكنك تغيير عنوان URL لمستودع بعيد موجود:

# تغيير عنوان URL البعيد git remote set-url <name> <new-url> # مثال: التبديل من HTTPS إلى SSH git remote set-url origin git@github.com:user/repo.git # تغيير عنوان URL للجلب بشكل منفصل عن الدفع git remote set-url --push origin <push-url> # التحقق من التغيير git remote -v
حالة الاستخدام: التبديل من مصادقة HTTPS إلى SSH، أو تحديث عنوان URL بعد نقل المستودع أو إعادة تسميته.

عناوين URL لـ HTTPS مقابل SSH

هناك بروتوكولان رئيسيان للاتصال بالمستودعات البعيدة:

عناوين URL لـ HTTPS: https://github.com/user/repo.git المزايا: ✓ تعمل في كل مكان (لا توجد مشاكل جدار ناري) ✓ سهلة الإعداد ✓ يمكن استخدام رموز الوصول الشخصية العيوب: ✗ قد تتطلب إدخال بيانات الاعتماد بشكل متكرر ✗ أقل أماناً إذا تم تخزين كلمات المرور عناوين URL لـ SSH: git@github.com:user/repo.git المزايا: ✓ أكثر أماناً (يستخدم مفاتيح SSH) ✓ لا توجد مطالبات بكلمة المرور بعد الإعداد ✓ مصادقة أسرع العيوب: ✗ يتطلب إعداد مفتاح SSH ✗ قد يتم حظره بواسطة جدران النار

جلب معلومات حول المستودعات البعيدة

تحديث معرفتك حول المستودعات البعيدة دون الدمج:

# جلب المعلومات من جميع المستودعات البعيدة git fetch --all # الجلب من مستودع بعيد محدد git fetch origin # جلب فرع محدد من المستودع البعيد git fetch origin main # الجلب وتقليم الفروع البعيدة المحذوفة git fetch --prune
نصيحة: الجلب يقوم بتنزيل البيانات من المستودع البعيد لكن لا يعدل دليل العمل أو الفرع الحالي. من الآمن تشغيله في أي وقت.

إدارة المستودعات البعيدة العملية

مهام المستودعات البعيدة الشائعة: # رؤية جميع المستودعات البعيدة git remote -v # إضافة مستودع بعيد جديد git remote add production https://server.com/repo.git # إعادة تسمية مستودع بعيد git remote rename old-name new-name # تغيير عنوان URL البعيد git remote set-url origin new-url # إزالة مستودع بعيد git remote remove old-remote # الحصول على معلومات مفصلة git remote show origin # تحديث فروع التتبع البعيدة git fetch origin

الفروع البعيدة مقابل الفروع المحلية

فهم العلاقة بين الفروع المحلية والبعيدة:

الفروع المحلية: - الفروع التي تنشئها وتعمل عليها محلياً - يمكنك الالتزام بها مباشرة - مثال: main, develop, feature-login فروع التتبع البعيدة: - مراجع للفروع البعيدة - يتم تحديثها عند الجلب/السحب - للقراءة فقط محلياً - مثال: origin/main, upstream/develop الفروع البعيدة: - الفروع الموجودة على المستودع البعيد - يتم تعديلها بالدفع إليها - مشتركة مع المتعاونين الآخرين

تمرين عملي:

إعداد مستودعات بعيدة متعددة:

# 1. إنشاء مستودع اختباري mkdir remote-practice cd remote-practice git init # 2. إنشاء التزام echo "# Remote Practice" > README.md git add README.md git commit -m "Initial commit" # 3. إضافة مستودعات بعيدة متعددة (استخدم مستودعاتك الخاصة) git remote add origin https://github.com/user/repo1.git git remote add backup https://github.com/user/repo2.git git remote add upstream https://github.com/original/repo.git # 4. سرد جميع المستودعات البعيدة git remote -v # 5. الحصول على معلومات مفصلة حول origin git remote show origin # 6. إعادة تسمية مستودع بعيد git remote rename backup secondary # 7. إزالة مستودع بعيد git remote remove secondary # 8. التحقق من الحالة النهائية git remote -v

استكشاف مشاكل المستودعات البعيدة وإصلاحها

المشكلة: "fatal: remote origin already exists" الحل: قم بإزالة المستودع البعيد الموجود أولاً git remote remove origin git remote add origin <url> المشكلة: لا يمكن الاتصال بالمستودع البعيد الحل: تحقق من صحة عنوان URL git remote -v git remote set-url origin <correct-url> المشكلة: فشل المصادقة الحل: تحقق من بيانات الاعتماد أو مفاتيح SSH # لـ HTTPS: تحقق من رمز الوصول الشخصي # لـ SSH: تحقق من إضافة مفتاح SSH إلى GitHub المشكلة: "no such remote" الحل: تحقق من وجود اسم المستودع البعيد git remote -v

الملخص

في هذا الدرس، تعلمت:

  • المستودعات البعيدة هي نسخ من مشروعك مستضافة في مكان آخر
  • "origin" هو الاسم الافتراضي للمستودع البعيد الرئيسي
  • يمكن أن يكون لديك مستودعات بعيدة متعددة (origin, upstream, backup، إلخ)
  • استخدم git remote لإضافة وإزالة وإعادة تسمية وفحص المستودعات البعيدة
  • فروع التتبع البعيدة تعرض حالة الفروع البعيدة
  • HTTPS و SSH هما البروتوكولان الرئيسيان لاتصالات المستودعات البعيدة
  • فرع upstream هو الفرع البعيد الذي يتتبعه فرعك المحلي
التالي: في الدرس التالي، سنتعلم كيفية دفع تغييراتك إلى المستودعات البعيدة!

ES
Edrees Salih
منذ 21 ساعة

We are still cooking the magic in the way!