إذا كانت الفروع المحذوفة لا تزال تظهر في Git على جهاز Mac الخاص بك، فقم بتقليم (prune) مراجع التتبع البعيدة من مستودعك المحلي. افتح تطبيق Terminal، وانتقل إلى مجلد المستودع، وتحقق من المستودع البعيد الذي تريد تحديثه، ثم شغّل git fetch --prune origin. يؤدي هذا إلى تحديث المراجع المجلوبة وإزالة المراجع القديمة المرتبطة بـ origin؛ ولا يؤدي إلى حذف الفروع من الخادم البعيد أو إزالة فروعك المحلية. وثائق Git الخاصة بأمر git fetch

ما الذي يتم تحديثه عند التقليم؟

الفرع البعيد المتعقب (remote-tracking branch) هو سجلك المحلي لفرع موجود في مستودع بعيد. على سبيل المثال، يمثل origin/feature-x آخر حالة تم جلبها للفرع البعيد. وهو منفصل تماماً عن فرع محلي يسمى feature-x. إذا تم حذف الفرع البعيد، فقد يظل مرجعك المحلي موجوداً حتى يقوم Git بتقليمه. عادةً ما يُخزّن تعيين الجلب الافتراضي في Git الفروع البعيدة ضمن refs/remotes/origin/، على الرغم من أن المستودع يمكن أن يستخدم تعييناً مختلفاً. يوضح Git كيفية تعيين مواصفات مراجع الجلب (fetch refspecs) للفروع البعيدة.

تقوم عملية التقليم بمقارنة المراجع الحالية للمستودع البعيد بالمراجع المحلية المشمولة في تكوين جلب هذا المستودع البعيد، ثم تزيل المراجع التي لم تعد موجودة عن بُعد. إنها تنظف العرض المحلي لديك؛ وليست أمراً لحذف الفروع البعيدة. يمكن أن يجعل هذا أوامر مثل git branch --all أسهل في القراءة عندما يكون المستودع قد راكم مراجع فروع قديمة. إرشادات Git بشأن التقليم

تحديث المراجع من Terminal

توضح وثائق Apple أن zsh هي واجهة الأوامر (shell) الافتراضية في تطبيق Terminal على Mac، على الرغم من إمكانية تكوين جهاز Mac أو بيئة مدارة بشكل مختلف. تعمل أوامر Git أدناه في بيئة إعداد Terminal المعتادة على macOS. دليل مستخدم Terminal من Apple

  1. افتح Terminal وانتقل إلى مجلد المستودع. إذا كنت تعرف مساره، ضعه بين علامات اقتباس إذا كان يحتوي على مسافات، على سبيل المثال:
cd "/Users/sam/Projects/Client App"

استبدل المسار النموذجي بالمسار الفعلي لمستودعك. إذا لم تكن متأكداً من مكان وجودك الحالي، فإن الأمر pwd يطبع الدليل الحالي. شغّل أوامر Git من داخل المستودع.

  1. تأكد من المستودع واسم الخادم البعيد:
git status --short --branch
git remote -v

يعرض الأمر git remote -v أسماء الخوادم البعيدة المكونة وعناوين URL الخاصة بها. يُعد origin هو الاسم الشائع، ولكن استخدم الاسم المعروض للخادم الذي تريد تحديث مراجعه. إذا كان المستودع يحتوي على عدة خوادم بعيدة، فقم بتقليم الخادم المقصود فقط.

  1. معاينة المراجع القديمة قبل إزالتها:
git remote prune --dry-run origin

يُبلغ Git بالمراجع التي سيقوم بتقليمها دون حذفها فعلياً. ينتمي خيار التجربة (dry-run) إلى git remote prune؛ ولا يقوم بجلب رؤوس فروع جديدة. وثائق Git الخاصة بأمر git remote

  1. إذا تطابقت المعاينة مع ما تتوقعه، فقم بالتحديث والتقليم في خطوة واحدة:
git fetch --prune origin

يقوم هذا بالأمر بالجلب وفقاً لمواصفات المرجع (refspec) المكونة للمستودع البعيد ويزيل المراجع القديمة التي يغطيها ذلك التعيين. يُحدد ناتج جلب Git المرجع المقلم بالعلامة -. للتقليم دون جلب التحديثات، استخدم git remote prune origin بدلاً من ذلك. يوثق Git كلتا الطريقتين المستقلتين.

  1. تحقق من النتيجة:
git branch --remotes
git branch --all

تُظهر القائمة الخاصة بالخوادم البعيدة فقط فروع التتبع البعيدة؛ بينما تتضمن قائمة جميع الفروع كلاً من فروع التتبع البعيدة والفروع المحلية. قد يظل الفرع غير الموجود في قائمة الفروع البعيدة موجوداً كفرع محلي، والتقليم لا يزيله.

إذا ظل المرجع القديم موجوداً

تحقق أولاً من أنك استخدمت اسم الخادم البعيد الصحيح. ثم انظر في تكوين الجلب الخاص بالمستودع: يمكن ضبط الخوادم البعيدة لتتبع فروع محددة فقط، وتُغير مواصفات المراجع المخصصة المراجعَ التي تؤثر عليها عمليتا الجلب والتقليم. افحص التعيين باستخدام git config --get-all remote.origin.fetch، مع استبدال origin إذا لزم الأمر. إذا تم تكوين الخادم البعيد لتتبع مجموعة فرعية فقط، فقد لا تتصرف الفروع الخارجة عن تلك المجموعة الفرعية كما هو متوقع في ظل عملية جلب افتراضية. يشرح Git مواصفات مراجع الجلب (fetch refspecs) وتأثيرها على التقليم.

إذا أبلغ الأمر عن خطأ في الشبكة أو المصادقة، فهذا يعني أن Git لم يتمكن من إكمال الجلب عن بُعد؛ قم بحل مشكلة الاتصال أو الوصول ثم أعد المحاولة. تجنب إضافة --prune-tags ما لم تكن تريد على وجه التحديد تطبيق التقليم على العلامات (tags) أيضاً: يحذر Git من أن مواصفات مراجع العلامات الصريحة يمكن أن تتسبب في إزالة العلامات المحلية المفقودة من ذلك الخادم البعيد. تشرح وثائق التقليم في Git هذا التحذير المتعلق بالعلامات.

استخدم git fetch --prune origin عندما تريد الحصول على معلومات التتبع البعيدة المحدثة والتنظيف معاً. استخدم git remote prune --dry-run origin أولاً عندما تريد مراجعة المرشحين للإزالة، أو git remote prune origin عندما تريد التنظيف دون جلب تحديثات الفروع.

المصادر