Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Git Force Push

آخر تحديث

يُرفض git push العادي عندما يتباعد فرعك المحلي عن البعيد - فلن يطمس Git كوميتات ربما لم ترها. يتجاوز الدفع القسري هذا الفحص ويجعل الفرع البعيد مطابقًا لفرعك المحلي. تحتاج إليه بعد إعادة كتابة التاريخ (rebase أو amend)، لكنه قد يمحو كوميتات الآخرين، لذا استخدم الأكثر أمانًا --force-with-lease.

جرّب هذه في ساحة الطرفية - صدفة حقيقية في متصفحك، ولا شيء لتثبيته.

الدفع القسري يجعل الفرع البعيد مطابقًا لتاريخك المحلي المعاد كتابته - ويُهمَل الـ commit المتشعب على البعيد.

الصياغة

CommandWhat it does
git push --forceيطمس الفرع البعيد، بدون فحص أمان
git push -fالصيغة المختصرة لـ --force
git push --force-with-leaseيفرض فقط إذا لم يدفع أحد آخر في هذه الأثناء
git push --force-with-lease origin featureدفع قسري أكثر أمانًا إلى فرع مُسمّى

--force vs --force-with-lease

Behavior--force--force-with-lease
يطمس البعيددائمًافقط إذا لم يتغيّر منذ آخر fetch لك
قد يمحو كوميتات الآخريننعميرفض، إلا إذا جدّدت عملية fetch الـ lease
مُوصى به للفِرقلانعم

الأسئلة الشائعة حول git force push

متى أحتاج إلى الدفع القسري؟
عندما تكون قد أعدت كتابة تاريخ موجود بالفعل على البعيد - بعد git rebase أو git commit --amend أو rebase تفاعلي دمج الكوميتات. لم يعد فرعك المحلي مطابقًا لتاريخ البعيد، لذا يُرفض الدفع العادي ولا يمكن تحديثه إلا بدفع قسري.
ما الفرق بين --force و --force-with-lease؟
--force يطمس الفرع البعيد دون شرط، وهو ما قد يحذف بصمت كوميتات دفعها زميل بعد آخر fetch لك. --force-with-lease يطمس فقط إذا كان البعيد ما زال عند الكوميت الذي رأيته آخر مرة - وإذا دفع شخص آخر في هذه الأثناء، فإنه يرفض ويحمي عمله. تنبيه واحد: أي fetch (بما في ذلك الجلب التلقائي الذي تجريه بيئة التطوير في الخلفية) يجدّد الـ lease، لذا ادفع مباشرة بعد تحققك من البعيد. ومع ذلك يبقى مفضّلًا على --force على أي فرع مشترك.
هل الدفع القسري خطير؟
قد يكون كذلك. على فرع مشترك، قد يطمس --force البسيط كوميتات دفعها آخرون، ما يحذف عملهم فعليًا من البعيد. إنه آمن على فرع تستخدمه أنت وحدك. عند الشك، استخدم --force-with-lease الذي يفشل بأمان بدلًا من طمس تغييرات لم ترها.
كيف أتراجع عن دفع قسري؟
إذا كانت الكوميتات القديمة ما زالت لديك محليًا أو في git reflog، يمكنك إعادة ضبط فرعك إليها ثم الدفع القسري مجددًا لاستعادة الحالة السابقة. هذا سبب إضافي لاستخدام --force-with-lease - فهو يجعل الطمس العَرَضي أقل احتمالًا بكثير من البداية.
هل يمكنني التدرّب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية لتشغيل أوامر git push في صدفة حقيقية في متصفحك - ولا شيء لتثبيته. كما يغطي كورس Git التفاعلي المجاني من Coddy العمل مع المستودعات البعيدة خطوة بخطوة.
Coddy programming languages illustration

تعلّم Git مع Coddy

ابدأ الآن