في هذا الدرس 6تصفّح المواضيع
لفهم آلية المزامنة في Git بدقة، يجب التمييز بين فرعك المحلي وبين مؤشرات التتبع البعيدة التي تحمل الصيغة origin/main. فبينما يتحرك فرعك المحلي main مع كل التزام محلي تنشئه، يحتفظ المؤشر origin/main بآخر موضع معروف للفرع على الخادم البعيد عند آخر اتصال شبكي.
# 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 لا يلمس ملفات شجرة العمل الحالية ولا يعدّل فرعك المحلي النشط إطلاقاً؛ لذا فهو آمن تماماً للتنفيذ في أي لحظة.
# 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.
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 لفرع التتبع البعيد.
# 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.
# 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Remote-Tracking Branch فرع التتبع البعيد
- مؤشر محلي للقراءة فقط مثل origin/main يسجل آخر موقع معروف للفرع على الخادم البعيد.
- للمراجعة
- 02 git fetch أمر الجلب الآمن git fetch
- ينزّل الالتزامات والمراجع الجديدة من المستودع البعيد دون دمجها في فروعك المحلية أو تعديل ملفات عملك.
- للمراجعة
- 03 git pull أمر الجلب والدمج git pull
- يجلب التحديثات من المستودع البعيد ويدمجها مباشرة في الفرع المحلي النشط وشجرة العمل.
- للمراجعة
- 04 Pruning Stale Refs تنظيف المراجع القديمة --prune
- حذف مؤشرات التتبع المحلية للفروع التي تم حذفها نهائياً من الخادم البعيد.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات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
- واجهة سطر الأوامر التي تتيح فحص الفروق بدقة قبل دمج التحديثات.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ الأمر git fetch origin ثم استعرض الالتزامات الجديدة بـ git log --oneline main..origin/main قبل دمجها.
-
بدّل بين تبويبات المختبر التفاعلي لملاحظة حركة مؤشر origin/main ومؤشر الفرع المحلي main.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي10 أسئلة تنتظرك +
ما الفرق الجوهري بين الأمر "git fetch" والأمر "git pull"؟
ينزّل git fetch التحديثات دون المساس بملفات عملك، بينما يقوم git pull بالتنزيل والدمج الفوري في فرعك الحالي.
ماذا يمثل المؤشر "origin/main" داخل مستودعك المحلي؟
يمثل مؤشر تتبع بعيد يسجل آخر موضع معروف للفرع الرئيسي على الخادم عند آخر عملية جلب.
يُعد تنفيذ الأمر "git fetch origin" آمناً دائماً لأنه لا يكتب فوق تعديلاتك غير المحفوظة في مجلد العمل.
صواب؛ إذ يحدّث git fetch قاعدة بيانات .git ومؤشرات التتبع فقط دون المساس بملفات العمل.
ما الأمران اللذان ينفذهما الأمر الافتراضي "git pull" بالتتابع داخلياً؟
ينفذ الأمر git pull عملية git fetch متبوعةً مباشرةً بعملية git merge.
عقب تنفيذ "git fetch origin"، أي أمر يعرض الالتزامات الجديدة في origin/main التي لم تدمج في main المحلي بعد؟
يعرض الأمر git log --oneline main..origin/main الالتزامات الواردة من الخادم قبل دمجها.
لماذا تفضل العديد من الفرق الهندسية استخدام "git pull --rebase" بدلاً من "git pull" العادي؟
لأنه يعيد صف الالتزامات المحلية فوق تحديثات الخادم في خط مستقيم ويتجنب التزامات الدمج الزائدة.
ما وظيفة الخيار "--prune" عند تمريره في الأمر "git fetch --prune"؟
يحذف مؤشرات التتبع البعيدة المحلية للفروع التي تم حذفها من الخادم السحابي.
يعرض تنفيذ الأمر "git branch -r" قائمة فروع التتبع البعيدة فقط.
صواب؛ إذ يخصص الخيار -r العرض لمؤشرات التتبع البعيدة مثل origin/main.
بعد فحص التعديلات المجلوبة عبر git fetch، أي أمر يدمج origin/main في فرعك المحلي النشط main؟
يدمج الأمر git merge origin/main التعديلات المجلوبة في فرعك المحلي الحالي.
إذا كانت لديك تعديلات محلية غير محفوظة في نفس الملفات القادمة من الخادم، فسيوقف git pull العملية لحماية عملك ويطلب حفظها أو تخزينها بـ stash أولاً.
صواب؛ يحمي Git تعديلاتك غير المحفوظة من الضياع ويطلب التزامها أو تخزينها مؤقتاً أولاً.