انتقل إلى محتوى الدرس
الدرس 28
دورة Version Control

جلب التحديثات ومزامنتها عبر git fetch وgit pullGit Fetch and Git Pull

افهم فروع التتبع البعيدة مثل origin/main، واجلب تحديثات الخادم بأمان دون المساس بملفاتك عبر git fetch، وادمجها في فرعك المحلي بـ git pull.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

لفهم آلية المزامنة في Git بدقة، يجب التمييز بين فرعك المحلي وبين مؤشرات التتبع البعيدة التي تحمل الصيغة origin/main. فبينما يتحرك فرعك المحلي main مع كل التزام محلي تنشئه، يحتفظ المؤشر origin/main بآخر موضع معروف للفرع على الخادم البعيد عند آخر اتصال شبكي.

مخطط يقارن الجلب الآمن بـ git fetch لتحديث origin/main ثم فحص التعديلات وأخيراً الدمج المباشر بـ git pull
Shell
# List remote-tracking branches only
git branch -r
# List both local and remote-tracking branches
git branch -a

عندما يرفع زملاؤك التزامات جديدة إلى GitHub، يتصل الأمر git fetch origin بالخادم وينزّل جميع الكائنات والالتزامات الجديدة إلى قاعدة بيانات .git المحلية ويحدّث موقع المؤشر origin/main. والأهم هندسياً أن git fetch لا يلمس ملفات شجرة العمل الحالية ولا يعدّل فرعك المحلي النشط إطلاقاً؛ لذا فهو آمن تماماً للتنفيذ في أي لحظة.

Shell
# Download remote updates without touching working files
git fetch origin
# Check status comparing local main with origin/main
git status

عقب تنزيل التحديثات بالأمر git fetch، يمكنك فحص ما أنجزه الفريق بدقة قبل دمجه في فرعك المحلي:

  • عرض الالتزامات الواردة: نفّذ git log --oneline main..origin/main لرؤية الالتزامات الموجودة في السحابة والتي لم تدخل فرعك المحلي بعد.
  • مقارنة تعديلات الكود: نفّذ git diff main origin/main لمعاينة الأسطر المتغيرة، ثم ادمجها بأمان عبر git merge origin/main.
Shell
git log --oneline main..origin/main
git diff main origin/main
# Integrate fetched updates into local main branch
git merge origin/main

إذا أردت اختصار خطوتَي التنزيل والدمج في أمر واحد مباشر لتحديث فرعك الحالي وملفات عملك فوراً، فنفّذ الأمر git pull. يعمل هذا الأمر داخلياً كعملية مركبة تنفذ git fetch أولاً، ثم تتبعها مباشرةً بعملية git merge لفرع التتبع البعيد.

Shell
# Fetch remote commits and merge them into current branch
git pull origin main
git status -s
git log --oneline -n 3

يحرص المهندسون المحترفون على استخدام خيارين متقدمين للحفاظ على نظافة السجل أثناء المزامنة اليومية:

  • السحب الخطي عبر git pull --rebase: بدلاً من توليد التزام دمج إضافي عند تزامن تعديلك المحلي مع تعديل زميلك، يجلب هذا الخيار تحديثات الخادم ثم يعيد صف التزاماتك المحلية غير المرفوعة فوقها في خط زمني مستقيم.
  • تنظيف المراجع المحذوفة عبر git fetch --prune: يمسح مؤشرات التتبع المحلية القديمة للفروع التي انتهى العمل عليها وحُذفت من منصة GitHub.
Shell
# Replay local commits cleanly on top of origin/main
git pull --rebase origin main
# Remove stale remote-tracking branch refs (-p / --prune)
git fetch --prune

يقارن الجدول المرجعي التالي بين أوامر الجلب والسحب وأثر كل منها على مؤشرات التتبع وملفات مجلد العمل:

الأمريحدّث المؤشر origin/main؟يعدّل ملفات العمل الحالية؟شكل سجل الالتزامات الناتج
git fetch originنعم (ينزّل التزامات الخادم)لا (آمن تماماً للمعاينة)يبقي الفرع المحلي دون تغيير
git fetch --pruneنعم + يحذف المراجع الملغاةلا (ينظف مراجع التتبع فقط)يزيل الفروع المحذوفة سحابياً
git pullنعم (ينفذ الجلب أولاً)نعم (يدمج في الفرع النشط)قد ينشئ التزام دمج ثلاثي الأطراف
git pull --rebaseنعم (ينفذ الجلب أولاً)نعم (يعيد صف التزاماتك فوقه)يحافظ على تاريخ خطي مستقيم ونظيف
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس عمل مؤشرات التتبع البعيدة origin/main، والجلب الآمن للتحديثات بالأمر git fetch وفحصها قبل الدمج، والمزامنة المباشرة بالأمر git pull مع خيارَي --rebase و--prune. الخطوة التالية: انتقل الآن إلى الدرس 29 «رفع الالتزامات والفروع عبر الأمر git push» لنشر تعديلاتك وفروعك المحلية إلى منصة GitHub.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Remote-Tracking Branch فرع التتبع البعيد
مؤشر محلي للقراءة فقط مثل origin/main يسجل آخر موقع معروف للفرع على الخادم البعيد.
للمراجعة
02 git fetch أمر الجلب الآمن git fetch
ينزّل الالتزامات والمراجع الجديدة من المستودع البعيد دون دمجها في فروعك المحلية أو تعديل ملفات عملك.
للمراجعة
03 git pull أمر الجلب والدمج git pull
يجلب التحديثات من المستودع البعيد ويدمجها مباشرة في الفرع المحلي النشط وشجرة العمل.
للمراجعة
04 Pruning Stale Refs تنظيف المراجع القديمة --prune
حذف مؤشرات التتبع المحلية للفروع التي تم حذفها نهائياً من الخادم البعيد.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 FF FF
Fast-Forward Merge
تحريك المؤشر للأمام مباشرة عندما لا توجد التزامات محلية متفرعة.
للمراجعة
02 DVCS DVCS
Distributed Version Control System
نظام يسمح بالعمل المحلي المستقل ثم المزامنة الواعية عبر الجلب والسحب.
للمراجعة
03 HEAD HEAD
Active Branch Reference
المؤشر الذي يحدد الفرع المحلي الذي يستقبل الدمج عند تنفيذ git pull.
للمراجعة
04 CLI CLI
Command-Line Interface
واجهة سطر الأوامر التي تتيح فحص الفروق بدقة قبل دمج التحديثات.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ الأمر git fetch origin ثم استعرض الالتزامات الجديدة بـ git log --oneline main..origin/main قبل دمجها.

  2. بدّل بين تبويبات المختبر التفاعلي لملاحظة حركة مؤشر origin/main ومؤشر الفرع المحلي main.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

ما الفرق الجوهري بين الأمر "git fetch" والأمر "git pull"؟

ينزّل git fetch التحديثات دون المساس بملفات عملك، بينما يقوم git pull بالتنزيل والدمج الفوري في فرعك الحالي.

02

ماذا يمثل المؤشر "origin/main" داخل مستودعك المحلي؟

يمثل مؤشر تتبع بعيد يسجل آخر موضع معروف للفرع الرئيسي على الخادم عند آخر عملية جلب.

03

يُعد تنفيذ الأمر "git fetch origin" آمناً دائماً لأنه لا يكتب فوق تعديلاتك غير المحفوظة في مجلد العمل.

صواب؛ إذ يحدّث git fetch قاعدة بيانات .git ومؤشرات التتبع فقط دون المساس بملفات العمل.

04

ما الأمران اللذان ينفذهما الأمر الافتراضي "git pull" بالتتابع داخلياً؟

ينفذ الأمر git pull عملية git fetch متبوعةً مباشرةً بعملية git merge.

05

عقب تنفيذ "git fetch origin"، أي أمر يعرض الالتزامات الجديدة في origin/main التي لم تدمج في main المحلي بعد؟

يعرض الأمر git log --oneline main..origin/main الالتزامات الواردة من الخادم قبل دمجها.

06

لماذا تفضل العديد من الفرق الهندسية استخدام "git pull --rebase" بدلاً من "git pull" العادي؟

لأنه يعيد صف الالتزامات المحلية فوق تحديثات الخادم في خط مستقيم ويتجنب التزامات الدمج الزائدة.

07

ما وظيفة الخيار "--prune" عند تمريره في الأمر "git fetch --prune"؟

يحذف مؤشرات التتبع البعيدة المحلية للفروع التي تم حذفها من الخادم السحابي.

08

يعرض تنفيذ الأمر "git branch -r" قائمة فروع التتبع البعيدة فقط.

صواب؛ إذ يخصص الخيار -r العرض لمؤشرات التتبع البعيدة مثل origin/main.

09

بعد فحص التعديلات المجلوبة عبر git fetch، أي أمر يدمج origin/main في فرعك المحلي النشط main؟

يدمج الأمر git merge origin/main التعديلات المجلوبة في فرعك المحلي الحالي.

10

إذا كانت لديك تعديلات محلية غير محفوظة في نفس الملفات القادمة من الخادم، فسيوقف git pull العملية لحماية عملك ويطلب حفظها أو تخزينها بـ stash أولاً.

صواب؛ يحمي Git تعديلاتك غير المحفوظة من الضياع ويطلب التزامها أو تخزينها مؤقتاً أولاً.