كيفية حذف فرع في Git محليًا وعن بعد

واحدة من أقوى ميزات Git هي فروعها خفيفة الوزن. أنها تسمح لك بالعمل على مراحل متوازية من التطوير بكفاءة. قد ينشئ المطور حتى فروعًا فردية لأخطاء منفصلة. تكاد الفروع تكاد تكون بلا تكلفة في الزمان والمكان.

تتعامل العديد من تدفقات عمل git مع الفروع طويلة الأجل والمؤقتة. لذلك ، غالبًا ما تكون هناك حاجة لحذف الفروع أثناء التطوير. هناك حاجة في بعض الأحيان إلى حذف الفروع المشتركة ، من خادم بعيد ، وكذلك من الفروع المحلية.

لماذا تحذف فرع؟

أولاً ، إذا كنت لا تزال تتعامل مع git ، فهناك فرصة جيدة جدًا لإنشاء فرع ثم تقرر أنك لست بحاجة إلى ذلك. أو ربما تقوم بتجربة الفروع وترغب في التخلص منها بنفسك. هذا جيد لأن التفرع في git عملية خفيفة الوزن. إنه سريع جدًا ويستخدم مساحة القرص بكفاءة.

نتيجة لذلك ، تشجع العديد من عمليات سير عمل تطوير git التفرع ، حتى للمهام الصغيرة جدًا أو القصيرة. على سبيل المثال ، تتمثل الإستراتيجية الشائعة في إنشاء فرع لإصلاح خطأ واحد. هذا صحيح حتى لو تضمن مؤلفًا واحدًا فقط إجراء تغيير من سطر واحد في ملف واحد.

لهذه الأسباب ، فإن إنشاء الفروع وحذفها هي عمليات تحتاج إلى فهم جيد. قد تجد نفسك غالبًا تحذف الفروع أثناء سير عمل التطوير النموذجي.

مستودع عينة مع الفروع

تشير الأمثلة التالية إلى مستودع نموذج بالهيكل التالي:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

لاحظ أن كل فرع محلي له فرع منبع مقابل من البعيد: origin .

حذف فرع باستخدام سطر الأوامر

صيغة الأمر الأساسية لحذف فرع هي:

 git branch (-d | -D) [-r] <branchname>...

أبسط شكل من أشكال الأمر يحذف فرعًا محليًا ، بشرط أن يتم دمج جميع تغييراته:

 $ git branch -d dev

لا يمكنك حذف الفرع النشط حاليا ؛ إذا حاولت القيام بذلك ، فستتلقى رسالة مثل هذه:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

عندما تسير الأمور على ما يرام ، سترى رسالة تأكيد:

 Deleted branch dev (was 1ae41e8).

إذا حذفت فرعًا موجودًا محليًا فقط ، مع إجراء تغييرات غير مدمجة ، فستفقد هذه التغييرات. لذلك ، سترفض git حذف الفرع في مثل هذه الحالة افتراضيًا:

 error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

كما توضح رسالة الخطأ ، يمكنك فرض الحذف باستخدام العلامة -D . ومع ذلك ، سيسمح لك git بحذف فرع محلي غير مدمج إذا كان موجودًا عن بُعد:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

حذف فرع بعيد مختلف تمامًا. ستستخدم الأمر git push مع العلم -d للحذف. بعد ذلك ، قم بتوفير اسم جهاز التحكم عن بعد ( الأصل غالبًا) واسم الفرع:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

حذف الفروع المحلية والبعيدة باستخدام GitHub Desktop

على عكس برنامج git لسطر الأوامر ، سيسمح لك تطبيق سطح المكتب الخاص بـ GitHub فقط بحذف الفرع النشط. يمكنك تنفيذ هذا الإجراء من خلال قائمة الفرع ، عن طريق تحديد خيار الحذف وتأكيده:

لن يسمح لك GitHub Desktop بحذف الفرع الافتراضي – على سبيل المثال main – على الرغم من أن git نفسه يدعم ذلك. إذا كان الفرع الافتراضي هو الفرع النشط حاليًا ، فسيقوم التطبيق بتعطيل إجراء القائمة.

إذا كان الفرع يمثل أيضًا فرعًا بعيدًا ، فإن GitHub Desktop يمنحك خيار حذفه من جهاز التحكم عن بُعد أيضًا:

حذف الفروع باستخدام GitKraken

يعرض GitKraken الفروع المحلية والبعيدة للمستودع الخاص بك في الشريط الجانبي الأيسر. يجب عليك حذف كل على حدة .

مرر مؤشر الماوس فوق اسم الفرع المناسب وانقر فوق قائمة إجراءات الفرع التي تشبه ثلاث نقاط رأسية. من القائمة ، حدد حذف <اسم الفرع> :

سترى رسالة تأكيد تخبرك أن هذه عملية مدمرة. يمكنك تأكيد رغبتك في الاستمرار باستخدام الزر " حذف" :

يعكس السلوك الافتراضي لبرنامج سطر الأوامر git ، يجب عليك أولاً التبديل إلى فرع آخر غير الفرع الذي تقوم بحذفه . بخلاف ذلك ، ستظهر لك رسالة خطأ:

حذف الفروع المحلية والبعيدة باستخدام البرج

يشبه حذف الفرع باستخدام Tower حذف الفرع باستخدام GitKraken. تظهر الفروع المحلية والبعيدة في لوحة على الجانب الأيسر. انقر بزر الماوس الأيمن فوق أي فرع وحدد خيار حذف من قائمة السياق:

يتمثل أحد الاختلافات الرئيسية في أنه يمكن حذف فرع بعيد مع فرع محلي أثناء التأكيد:

حذف فرع على جيثب

يعمل GitHub فقط كمصدر بعيد ، لذا فإن الفروع هناك بعيدة بشكل افتراضي. إذا قمت بحذف فرع باستخدام موقع GitHub ، فسيتعين عليك حذف الفرع المحلي المقابل باستخدام إحدى الطرق الأخرى هنا.

كما هو الحال مع تطبيق GitHub Desktop ، لن يسمح لك موقع GitHub بحذف الفرع الافتراضي. الخيار ببساطة لا يظهر. ومع ذلك ، فإن حذف الفرع أمر بسيط. من صفحة رمز المستودع ، انقر فوق ارتباط الفروع ، وحدد الفرع المراد حذفه ، ثم انقر فوق أيقونة حذف هذا الفرع ، والتي تبدو مثل سلة المهملات:

اعلم أنه لا توجد عمليات تحقق من التغييرات غير المدمجة ، لذلك في GitHub ، سيتم حذف الفرع على الفور. ومع ذلك ، نظرًا لأنه سيمثل دائمًا فرعًا بعيدًا ، يجب أن يكون هذا هو السلوك الذي تتوقعه.

لاحظ أنه بعد الحذف ، سترى زرًا لاستعادة الفرع. ومع ذلك ، فهذه مجرد ميزة مفيدة للتراجع ، في حالة النقر فوق رمز الحذف عن طريق الخطأ. لا تعتمد عليه ، لأنه بمجرد التحديث أو الانتقال بعيدًا عن الصفحة ، ستفقد الخيار!

حذف الفروع المحلية والبعيدة على Bitbucket

لن يسمح لك Bitbucket ، مثل GitHub ، بحذف الفرع الافتراضي. يسمي Bitbucket هذا الفرع الرئيسي في إعدادات المستودع . يمكنك حذف أي فرع آخر مدرج في علامة تبويب الفروع ، من خلال قائمة الإجراءات المقابلة له:

يمكنك أيضًا حذف أكثر من فرع في وقت واحد إذا كنت تقوم بعملية تنظيف كبيرة:

يعد حذف الفروع جزءًا من سير عمل Git النموذجي

يمكن أن تؤدي فروع Git إلى تعقيد سير عملك ، خاصةً مع الفروع المحلية والبعيدة والمتتبعة. ولكن من أجل التطوير اليومي البسيط ، من المحتمل أن تقوم بإنشاء وحذف فروع محلية طوال الوقت. هذا جانب أساسي من سير عمل git النموذجي الذي يجب أن تعتاد عليه.