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

Git Reset --hard

آخر تحديث

ينقل git reset --hard فرعك إلى commit هدف ويجبر كلًّا من منطقة التجهيز (staging area) وشجرة العمل لديك على مطابقته تمامًا - متجاهلًا في أثناء ذلك كل تغيير غير مُودَع. إنه أكثر أشكال git reset تدميرًا، لذا تأكد أنك لم تعد بحاجة إلى عملك الحالي قبل تشغيله.

هل أعدت ضبط commit عن طريق الخطأ؟ عادةً ما يمكن استعادة hard reset عبر git reflog. جرّب هذا بأمان في ساحة الطرفية (terminal playground) - وهي shell حقيقية داخل متصفحك.

git reset --hard يرجع HEAD إلى الوراء ويتخلص من كل ما بعده - بما في ذلك منطقة الإدراج وشجرة العمل.

الصيغة

CommandWhat it does
git reset --hardيتجاهل جميع التغييرات غير المُودَعة (يبقى على HEAD)
git reset --hard HEAD~1يزيل آخر commit وتغييراته
git reset --hard <hash>يعيد الفرع قسرًا إلى commit محدد
git reset --hard origin/mainيجعل الفرع المحلي مطابقًا للمستودع البعيد تمامًا

استعادة hard reset

العمل المُودَع الذي تجاهلته بإعادة الضبط عادةً ما يظل قابلًا للاستعادة.

StepCommandResult
1git reflogيسرد الأماكن التي مرّ بها HEAD، مع الـ hashes
2git reset --hard <hash>يعود إلى الـ commit الذي كان قبل إعادة الضبط

أسئلة شائعة حول git reset --hard

ماذا يفعل git reset --hard فعليًا؟
ينقل فرعك الحالي إلى commit الهدف ويكتب فوق كلٍّ من منطقة التجهيز وشجرة العمل لديك ليطابقاه. أي تغييرات غير مُودَعة - سواء كانت مُجهَّزة أم لا - يتم تجاهلها. مقارنةً بـ --soft (الذي يبقي التغييرات مُجهَّزة) و--mixed (الذي يبقيها غير مُجهَّزة)، يُعد --hard الوضع الوحيد الذي يتخلص من التغييرات.
كيف أتجاهل جميع تغييراتي المحلية؟
شغّل git reset --hard دون تحديد commit لإعادة ضبط شجرة العمل إلى آخر commit، ما يمحو التعديلات غير المُودَعة. ولمسح الملفات غير المتتبَّعة التي لا يمسّها reset أيضًا، اتبعه بـ git clean -fd.
كيف أعيد ضبط فرعي ليطابق المستودع البعيد؟
شغّل git fetch ثم git reset --hard origin/main (استبدله بفرعك). هذا يجبر فرعك المحلي على مطابقة المستودع البعيد تمامًا، متجاهلًا الـ commits والتغييرات المحلية التي تباعدت عنه - وهو مفيد عندما يسير فرعك المحلي على نحو خاطئ وتريد نسخة المستودع البعيد فقط.
هل يمكنني التراجع عن git reset --hard؟
العمل المُودَع عادةً نعم: شغّل git reflog لإيجاد الـ commit الذي كان فرعك يشير إليه قبل إعادة الضبط، ثم git reset --hard <hash> للعودة إليه. أما التغييرات التي لم تُودَع قط (الموجودة فقط في شجرة العمل لديك) فلا يمكن استعادتها، لذا تعامل مع --hard بحذر.
هل يمكنني التدرب على هذا عبر الإنترنت؟
نعم. افتح ساحة الطرفية (terminal playground) لتشغيل git reset --hard في shell حقيقية داخل متصفحك - دون تثبيت أي شيء. كما يغطي دورة Git التفاعلية المجانية من Coddy إعادة الضبط والتراجع عن التغييرات خطوة بخطوة.
Coddy programming languages illustration

تعلّم Git مع Coddy

ابدأ الآن