للتحقق مما إذا كان فرع Git المحلي آمنًا للحذف على نظام macOS، افحص شجرة العمل الخاصة بك، وقارن إيداعات الفرع مع الفرع الذي تنوي الاحتفاظ به، وتحقق مما إذا كان قيد الاستخدام في شجرة عمل (worktree) أخرى. افتح تطبيق Terminal، وانتقل إلى المستودع، واستخدم فحص الفروع المدمجة في Git كدليل—وليس كضمان بأن الفرع لا يحمل أي قيمة. إذا لم تكن متأكدًا، فاحتفظ بالفرع حتى تتأكد من حفظ عمله.

1. افتح المستودع وتحقق من وجود تغييرات غير مكتملة

افتح تطبيق Terminal من التطبيقات (Applications) > الأدوات المساعدة (Utilities)، أو استخدم Spotlight للبحث عنه. توضح وثائق Apple أن zsh هو الصدفة (shell) الافتراضية في Terminal، والأوامر الواردة أدناه تعمل في بيئة macOS القياسية. في Terminal، انتقل إلى دليل المستودع؛ ضع المسار بين علامتي اقتباس إذا كان يحتوي على مسافات:

cd "/path/to/your/repository"
git status --short --branch

يُظهر ناتج الحالة الفرع الذي تم السحب إليه (checked-out) وما إذا كانت الملفات تحتوي على تغييرات. قم بإجراء إيداع (commit) أو حفظ تغييرات الملفات المطلوبة بطريقة أخرى قبل تغيير الفروع. هذا الفحص منفصل عن سجل الفرع: شجرة العمل النظيفة لا تعني أنه قد تم دمج إيداعات الفرع. وبالمثل، فإن التغييرات غير المودعة لا تكون محمية لمجرد أنك قمت بحذف فرع باستخدام خيار الحذف الآمن العادي في Git.

2. تحقق مما إذا كان الفرع قد تم دمجه في الهدف الصحيح

حدد أولاً الفرع الذي تنوي الاحتفاظ به، وعادة ما يكون main أو develop. إذا كنت متواجدًا حاليًا على الفرع المرشح للحذف، فانتقل إلى الفرع الهدف قبل حذف أي شيء. استبدل feature/example و main أدناه بأسماء فروعك الفعلية:

git switch main
git branch --merged main
git branch --no-merged main

تحتوي القائمة الأولى على الفروع المحلية التي يمكن الوصول إلى أطرافها (tips) من main؛ وتسرد الثانية الفروع التي لا يمكن الوصول إلى أطرافها منه. يصف Git الأمر git branch --merged بأنه يعرض الفروع المدمجة في الإيداع المحدد (أو HEAD إذا لم يتم تحديد أي إيداع). هذا اختبار لسجل الإيداعات، لذا فهو مفيد فقط عندما يكون main هو الفرع الذي يجب أن يحتوي على العمل. قد يظل الفرع المدمج في فرع إصدار أو فرع دمج آخر يظهر كفرع غير مدمج بالنسبة لـ main. وثائق branch في Git

إذا ظهر الفرع المرشح ضمن --merged main، فهذا مؤشر قوي على أنه يمكن بالفعل الوصول إلى إيداعاته من main. تأكد من وجود الميزة أو الإصلاح حيث يُتوقع، خاصة إذا كان فريقك يستخدم طلبات السحب (pull requests)، أو فروع الإصدار، أو هدف دمج مختلفًا. إذا ظهر ضمن --no-merged، فلا تحذفه حتى تفحص الإيداعات الفريدة الخاصة به.

3. فحص الإيداعات والتتبع البعيد (upstream tracking)

لمقارنة فرع مرشح مع الفرع الهدف، استخدم:

git log --oneline main..feature/example

يعرض هذا الأمر الإيداعات التي يمكن الوصول إليها من feature/example والتي لا يمكن الوصول إليها من main. إذا أظهر نتائج لإيداعات، فافحصها وحدد ما إذا كانت بحاجة إلى الدمج، أو الانتقاء (cherry-picked)، أو الاحتفاظ بها. النتيجة الفارغة تعني أن الفرع المرشح لا يحتوي على أي إيداعات تتجاوز main في هذه المقارنة؛ ولا يثبت ذلك أن اسم الفرع أو الغرض منه لم يعد مطلوبًا.

قد يتتبع الفرع أيضًا فرعًا بعيدًا. تحقق من معلومات التتبع الخاصة به عبر:

git branch -vv

المصدر البعيد (upstream) هو مرجع تم تكوينه يستخدمه Git لعمليات مثل السحب (pull) والدفع (push). إن عدم وجود مرجع بعيد أو كونه مفقودًا لا يثبت أن الفرع المحلي آمن للإزالة: فقد تظل إيداعاته فريدة. كما يمكن أن يكون مرجع التتبع البعيد قديمًا حتى تقوم بعملية الجلب (fetch). إذا كنت ترغب في تحديث بيانات التتبع البعيد، فإن الأمر git fetch --prune origin يجلب البيانات من origin ويزيل مراجع التتبع البعيد القديمة وفقًا لمحدد المرجع (refspec) الخاص بذلك المصدر البعيد؛ وهو لا يحذف فرعك المحلي. وثائق fetch في Git

4. فحص أشجار العمل (worktrees)، ثم الحذف بأمان

يمكن سحب الفرع في شجرة عمل (worktree) أخرى مرتبطة. يرفض Git حذف الفرع المسحوب حاليًا، لذلك إذا تم رفض الحذف، فتحقق من git worktree list وافحص الدلائل المدرجة قبل اتخاذ أي إجراء إضافي. تأكد أيضًا من أن الفرع المرشح ليس فرعك الحالي؛ وانتقل إلى الهدف المقصود أولاً. وثائق branch في Git

عندما تتأكد من أن العمل محفوظ وأن الفرع لم يعد مطلوبًا، احذفه باستخدام خيار الحماية في Git:

git branch -d feature/example

يسمح Git باستخدام -d فقط عندما يكون الفرع مدمجًا بالكامل في مصدره البعيد (upstream) المُعد، أو في HEAD عند عدم تعيين أي مصدر بعيد. إذا رفض Git ذلك، فاعتبره تنبيهًا للتحقق. يجبر خيار -D عملية الحذف بغض النظر عن حالة الدمج؛ إنه يتجاوز هذا الإجراء الوقائي ولا ينبغي أن يكون حلاً بديلاً روتينيًا. وثائق branch في Git

القرار الحذر أمر بسيط: لا تحذف باستخدام -d إلا بعد أن يصبح عمل الفرع المرشح موجودًا في الوجهة المقصودة، وتتم مراجعة الإيداعات الفريدة، ولا توجد شجرة عمل لا تزال تستخدم الفرع. إذا كان أي من هذه الفحوصات غير واضح، فاحتفظ بالفرع وحدد وجهته أولاً.

المصادر