إذا كنت مستخدمًا نشطًا لـ Git مثلي، فربما قد تكون قد تراكمت لديك مجموعة من الفروع القديمة. بعضها دُمج، وبعضها مهجور، وبعضها قد لا تتذكر حتى أنشأته. الاحتفاظ بهذه الفروع قد لا يبدو أمرًا كبيرًا، ولكن مع مرور الوقت، يمكن أن تشوش مستودع الشفرات الخاص بك وتجعل من الصعب تتبع العمل النشط.
في هذا الدليل، سأشرح كيفية حذف فروع Git محليًا وعن بعد، مغطيًا أساليب القيام بذلك بأمان والمخاطر المحتملة التي يجب أن تكون على يقظة تجاهها.
ماذا يفعل حذف فرع Git؟
الفروع في Git مؤقتة بتصميمها. تمنحك مساحة للعمل على ميزات جديدة، أو إصلاح الأخطاء، أو التجارب دون التداخل مع شفرة الرئيسية. ولكن بمجرد أن يكمل الفرع وظيفته، فإن الاحتفاظ به فقط يضيف فوضى غير ضرورية. حذف الفروع هو ما أعتبره صيانة جيدة للحفاظ على سير عمل Git الخاص بك نظيفًا وقابلًا للإدارة.
أود أن أكرر أن “حذف” فرع ليس كما “مسح” عملك. عندما تحذف فرعًا في Git، فأنت لا تمسح الالتزامات، فقط تمسح الإشارة إليها. إليك كيف يعمل الأمر:
- حذف فرع محلي يزيل الفرع من مستودعك الشخصي. إذا لم يكن هناك أي فرع آخر أو وسم يشير إلى تلك الالتزامات، فقد يتم تنظيفها في نهاية المطاف بواسطة جمع القمامة في Git.
- حذف فرع عن بعد يزيل الفرع من مستودع المشاركة (مثل GitHub, GitLab, Bitbucket)، مما يجعله غير متاح للمشاركين. ومع ذلك، ستظل النسخ المحلية لهذا الفرع على الأجهزة الأخرى حتى يتم إزالتها يدويًا أو تحديثها.
لماذا حذف الفرع؟
حذف الفرع هو جزء من الصيانة الجيدة، ببساطة. بنفس الطريقة التي يُعتبر فيها حذف الصور المكررة والتنزيلات القديمة والمجلدات القديمة ممارسة جيدة، هناك عدة أسباب جيدة لحذف الفرع بمجرد الانتهاء من استخدامه:
- يحافظ على نظافة مستودعك. العديد من الفروع، خاصة القديمة، يجعل من الصعب تتبع العمل النشط.
- يمنع الالتباس. إذا كان الفرع لم يعد ذو صلة، فإبقاؤه يمكن أن يسبب عدم اليقين حول ما إذا كان لا يزال قيد الاستخدام.
- يعزز التعاون. في بيئات العمل الجماعي، حذف فروع الميزات المكتملة يشير إلى أن العمل قد انتهى ويمنع العمل غير الضروري على الشيفرات القديمة.
- يقلل من تضخم مستودع البيانات البعيد. يمكن أن تصبح مستودعات البيانات البعيدة مكدسة بالفروع القديمة، مما يجعل من الصعب عليك (أو على المشاهدين) تصفح تاريخ المشروع.
إذا كنت جديدًا على Git أو تحتاج إلى إعداده قبل إدارة الفروع، تحقق من دليل تثبيت Git للحصول على تعليمات خطوة بخطوة.
حذف فرع Git المحلي
حذف فرع Git المحلي ليس صعبًا؛ لحسن الحظ، إنه أحد المهام الأكثر بساطة في Git. دعنا نستعرض الطريقة الأكثر أمانًا للقيام بذلك وما يجب مراقبته.
الأمر الأساسي لحذف فرع Git المحلي
أمانةً، يمكنك حذف فرع Git المحلي بأمان باستخدام العلم -d
:
git branch -d <branch_name>
خذ في اعتبارك أن هذا الأمر يعمل فقط إذا تم دمج الفرع بالكامل في الفرع الحالي (عادةً main
أو master
). إذا كانت هناك أي تغييرات غير مدمجة، سيمنعك Git لمنع فقدان البيانات عن طريق الخطأ.
قوة حذف فرع محلي
إذا حاولت حذف فرع يحتوي لا تزال عليه تغييرات غير مدمجة، لن يسمح لك Git ما لم تجبره:
git branch -D <branch_name>
العلم -D
(لاحظ الحروف الكبيرة) يتجاوز الفحص الأماني ويحذف الفرع مباشرة، سواء كان مدمجًا أم لا. أنصح بشدة باستخدام الحذر مع هذا. سيتم فقدان أي عمل غير مدمج ما لم يكن لديك نسخة احتياطية أو فرع آخر يشير إلى نفس التعهدات.
التحقق من وجود تغييرات غير مدمجة قبل الحذف
قبل أن تصل إلى نقطة حذف الفرع، من الجيد التحقق مما إذا كانت هناك تغييرات غير مدمجة فيه. يمكنك القيام بذلك باستخدام:
git branch --no-merged
الأمر أعلاه يقوم بسرد جميع الفروع التي لم يتم دمجها في الفرع الحالي. إذا كان الفرع الذي تنوي حذفه مدرجًا في هذه القائمة، تحقق مرتين من عدم الحاجة إلى أي تغييرات فيه قبل المتابعة.
هل ترغب في مرجع سريع لأوامر Git، بما في ذلك حذف الفروع؟ قم بتنزيل ورقة الاحتيال Git Cheat Sheet المفيدة.
حذف فرع Git عن بُعد
حذف فرع عن بُعد يختلف قليلاً عن حذف الفرع المحلي. نظرًا لأن الفروع البعيدة موجودة في مستودعات مشتركة، يساعد إزالتها في الحفاظ على التنظيم ويمنع الفروع القديمة من تعقيد سير العمل للفريق.
الأمر الأساسي لحذف فرع بعيد
لحذف فرع من مستودع بعيد مثل GitHub، GitLab، أو Bitbucket، استخدم:
git push origin --delete <branch_name>
تقوم هذه الأمر بإزالة إشارة الفرع من مستودع البيانات البعيد، مما يجعله غير متاح للآخرين. ومع ذلك، فإن أي نُسخ محلية من الفرع على أجهزة أخرى لن تتأثر ويجب تنظيفها على حدة.
التحقق من حذف الفرع البعيد
بعد حذف فرع بعيد، ستحتاج إلى التأكد من أنه تم حذفه فعليًا. أولاً، احصل على أحدث التحديثات من مستودع البيانات البعيد:
git fetch --prune
هذا يزيل الإشارات البعيدة القديمة. للتحقق مرة أخرى من أن الفرع لم يعد مدرجًا، قم بتشغيل الأمر التالي:
git branch -r
يعرض الأمر أعلاه جميع الفروع البعيدة المتبقية. إذا كان الفرع المحذوف لا يزال مدرجًا، جرب تشغيل git fetch --prune
مرة أخرى أو تأكد من تنفيذ أمر الحذف على المستودع البعيد الصحيح.
أفضل الممارسات لحذف فروع Git
حذف الفروع هو جزء روتيني من العمل مع Git، ولكن القيام بذلك بالطريقة الصحيحة يمكن أن يوفر لك الكثير من الصداع غير الضروري. فيما يلي بعض الممارسات الجيدة للحفاظ على تنظيم مستودع الشفرة الخاص بك وتجنب الأخطاء المحتملة.
تجنب حذف الفروع غير المدمجة مبكرًا
قبل حذف الفرع، تأكد من عدم احتوائه على أي عمل غير مدمج لا يزال مطلوبًا. إذا كنت غير متأكد، تحقق من حالته باستخدام:
git branch --no-merged
إذا كان الفرع يحتوي على تغييرات قيمة لم تتم دمجها، فكر في دمجها أو أرشفتها أولاً بدلاً من حذفها مباشرة.
حذف بعد الدمج
عندما يتم دمج ميزة أو إصلاح في الفرع الرئيسي (main
أو master
)، ليس هناك سبب للإبقاء على الفرع القديم. يساعد حذف الفروع المدمجة في منع التشويش ويجعل من الأسهل رؤية الفروع النشطة لا تزال.
تواصل مع فريقك
كونًا من واجب احترافي، عند عملك على مشروع تعاوني، تجنب حذف فرع بدون تحذير فريقك. يمكن أن يسبب الارتباك أو، في أسوأ الأحوال، يعطل عمل شخص آخر. قبل إزالة فرع بعيد، تحقق مع فريقك للتأكد من عدم استخدام أحد له بعد. أفضل تفضيلًا لي رسالة بسيطة عبر سليك أو ملاحظة لتجنب الإحباط.
قبل حذف فرع، قد ترغب في ترتيب تاريخ الاستدمج الخاص بك من خلال ضغط الاستدمجات. تعرف على كيفية القيام بذلك في دليلنا لضغط الاستدمج في Git.
المشاكل الشائعة عند حذف فروع Git
حذف الفروع في Git عادة ما يكون بدون مشاكل، ولكن هناك بعض المشاكل الشائعة التي يمكن أن تعرقلك. إليك ما يجب مراقبته وكيفية التعامل مع هذه المشاكل إذا ظهرت.
حذف فرع لم يتم دمجه بالكامل
مرة أخرى، إذا حاولت حذف فرع يحتوي لا يزال على تغييرات غير مدمجة باستخدام git branch -d
، سيمنعك Git لمنع حدوث فقدان البيانات المحتمل. هذا هو نظام السلامة. سيتم فقدان أي عمل غير مدمج إذا قمت بحذفه بالقوة باستخدام -D
.
إذا قمت بحذف فرع ما بالفعل وأدركت أنك تحتاج إليه مرة أخرى، قد تتمكن من استعادته باستخدام أمر reflog
في Git:
git reflog git checkout -b <branch_name> <commit_hash>
يتيح لك هذا استعادة الفرع من آخر تعهد معروف به إذا لم يكن قد فقد تمامًا بفعل جمع القمامة.
حذف الفرع الحالي
لن يسمح لك Git بحذف الفرع الذي أنت عليه حاليًا، الأمر الذي يبدو منطقيًا وإلا فستبقى بدون فرع نشط. إذا رأيت خطأ عند محاولة حذف فرع، انتقل أولاً إلى فرع آخر:
git checkout main
أو، إذا كنت تستخدم Git 2.23+:
git switch main
عندما تكون على فرع مختلف، يمكنك حذف الفرع الذي تنوي إزالته بأمان.
هل تحتاج إلى التبديل بين الفروع قبل حذف واحد؟ يقوم دليلنا على فحص فرع بعيد في Git بإرشادك خلال العملية.
حذف فرع بعيد بطريق الخطأ
إذا تم حذف فرع بعيد بالخطأ، يمكنك استعادته (بشرط أن يكون لديك نسخة محلية) عن طريق دفعه مرة أخرى إلى الفرع البعيد:
git push origin <deleted_branch_name>
هذا يعيد إنشاء الفرع على مستودع الفرع البعيد، مما يعيد إمكانية الوصول للمشاركين. إذا لم يكن هناك نسخة محلية، قد تحتاج إلى التحقق يدويًا من تاريخ التعهدات الخاص بك وإعادة إنشاء الفرع.
لماذا لا أستطيع حذف فرع Git؟
إذا كنت تواجه صعوبة في حذف فرع في Git، قم بمراجعة المشاكل الشائعة؛ تحقق مما إذا كانت قد دمجت بشكل كامل، وأنك تعمل حاليًا على الفرع، أو أنه فرع بعيد. من هنا، قد تكون المشكلة في إعداداتك أو صلاحياتك.
- أول شيء يجب التحقق منه هو ما إذا كنت تعمل حاليًا على ذلك الفرع. لن يسمح لك Git بحذف فرع تعمل عليه حاليًا، لذا ستحتاج إلى التبديل إلى فرع مختلف أولاً.
- إذا لم يكن هذا هو المشكلة، فقد يزال الفرع يحتوي على تغييرات غير مدمجة. يحمي Git الفروع التي بها عمل غير مدمج، لذا ما لم تكن متأكدًا تمامًا من أنك لا تحتاج إلى تلك التغييرات، ستحتاج إلى دمج أو حذف الفرع بالقوة باستخدام
git branch -D اسم-الفرع
. - إذا كنت تحاول حذف فرع بعيد، فإن استخدام
git branch -d
لن يكون كافيًا. بدلاً من ذلك، ستحتاج إلى تشغيلgit push origin --delete branch-name
، ولتنظيف الإشارات القديمة، يمكنك استخدامgit fetch --prune
. - بعض مستودعات الأكواد، خصوصًا تلك المستضافة على منصات مثل GitHub أو GitLab، تحتوي على فروع محمية لا يمكن حذفها دون تغيير الإعدادات. إذا كنت تعمل في مستودع مشترك، قد تحتاج أيضًا إلى الصلاحيات الصحيحة لحذف الفروع.
هل لا تزال عالقًا؟ يمكن أن يقدم تشغيل git branch -v
لك مزيدًا من التفاصيل حول حالة الفرع ويساعدك في فهم ما يحدث قبل المحاولة مرة أخرى.
تنظيف الفروع تلقائيًا باستخدام Git
أنا أحب التلقائيات الجيدة. بينما يعمل حذف الفروع يدويًا بشكل جيد، ويجب عليك أن تفهم كيفية القيام بذلك، هناك طريقة أخرى. إذا كنت تتعامل مع العديد من الفروع (مثل في إعداد الفريق)، يمكن للتلقائيات توفير الوقت والحفاظ على النظام. يقدم Git بعض الطرق لتبسيط تنظيف الفروع، وتقليل الفوضى دون جهد إضافي.
تلقائي تنظيف الفروع البعيدة
عند حذف فرع بعيد، يظل Git المحلي يحتفظ بالإشارة إليه حتى تقوم بتحديث الأمور يدويًا. بدلاً من تنظيفها واحدة تلو الأخرى، يمكنك استخدام:
git fetch --prune
الأمر أعلاه يزيل تلقائيًا المراجع المحلية للفروع التي لم تعد موجودة في مستودع البيانات البعيد، مما يحافظ على تزامن كل شيء. تشغيل هذا بانتظام يمنع تراكم الفروع القديمة في مستودعك المحلي.
استخدم خطافات Git للتنظيف
للفرق أو المشاريع الكبيرة ، يمكن أن تساعد خطافات Git في إعداد تنظيف الفروع تلقائيًا. الخطافات هي سكربتات مخصصة تعمل في نقاط معينة في سير العمل Git ، مثل بعد دمج فرع. يمكنك تكوين خطاف post-merge لحذف الفروع المدمجة تلقائيًا بعد فترة معينة ، مما يضمن عدم ترك الفروع القديمة بلا داعٍ.
الاستنتاج
يمكن أن تصبح الفروع فوضوية مع مرور الوقت ، ولكن القليل من “التقليم” يساعد في الحفاظ على نظافة مستودعك وجعل سير العمل الخاص بك فعالًا. من خلال اعتماد عادة حذف الفروع المدمجة ، والتحقق المزدوج من تلك غير المدمجة والحفاظ على التواصل المفتوح في مشاريع الفريق ، يمكنك تجنب هذه المشاكل. وإذا كنت ترغب في الذهاب خطوة إضافية ، فإن أدوات التلقيم التلقائي مثل git fetch --prune
و Git hooks يمكن أن تساعد في الحفاظ على نظافة مستودعك دون مزيد من الجهد.
حذف الفروع خطوة واحدة نحو اتقان Git. لتعميق فهمك لنظام التحكم بالنسخ، تحقق من دورة Git المتوسطة. إذا كنت تعمل مع مستودعات GitHub، فإن فهمك الصلب لمفاهيم GitHub الأساسية أمر ضروري. تعلم المزيد في دورة مفاهيم GitHub المقدمة!