كيفية التراجع عن git reset --hard HEAD~1

يمكن أن يكون تنفيذ الأمر git reset --hard HEAD~1 عن طريق الخطأ تجربة محبطة للمطورين. هذا الأمر يزيل بشكل لا رجعة فيه آخر التزام مع جميع التغييرات المرفقة به، مما يتركك في موقف صعب. ومع ذلك، لا داعي للقلق—فيوجد طريقة لاستعادة تلك الالتزامات المفقودة طالما أنه لم يتم جمعها كسلة مهملات. في هذه التدوينة، سنتناول كيفية التراجع عن آثار هذا الأمر واستعادة ملفاتك.

فهم المشكلة

عند تشغيل git reset --hard HEAD~1، يقوم Git بتحريك المؤشر HEAD إلى الوراء بمقدار التزام واحد. هذه الخطوة تتجاهل أي تغييرات تمت في ذلك الالتزام الأخير وفي دليل العمل الخاص بك. في الكود، يظهر هذا الأمر كما يلي:

git reset --hard HEAD~1

المشكلة هي أنه بمجرد أن تقوم بإعادة التعيين، قد يبدو أن التزاماتك وتغييراتك قد فقدت، لكن لحسن الحظ، يحتفظ Git بسجل مرجعي (reflog) يسمح لك بعرض جميع التغييرات التي تم إجراؤها على HEAD، مما يوفر لك مسارًا للاستعادة.

الحل: استخدام Git Reflog

1. تحقق من Reflog

الخطوة الأولى في استعادة التزامك المفقود هي التحقق من الرفلوبغ. يقوم الرفلوبغ بتتبع التحديثات على مؤشر HEAD، مما يعني أنه سيكون بإمكانك رؤية المكان الذي كان فيه HEAD قبل أن تشغل أمر إعادة التعيين.

شغل الأمر التالي للتحقق من الرفلوبغ الخاص بك:

git reflog

سترى مخرجات مشابهة لهذا:

1a75c1d... HEAD@{0}: reset --hard HEAD^: تحديث HEAD
f6e5064... HEAD@{1}: commit: تمت إضافة file2

في هذه الحالة، f6e5064 هو هاش الالتزام الخاص بالالتزام المفقود (حيث قمت بإضافة file2).

2. إعادة تعيينه إلى الالتزام المفقود

الآن بعد أن حصلت على مرجع الالتزام (f6e5064)، يمكنك تنفيذ الأمر التالي لاستعادة حالتك السابقة:

git reset --hard f6e5064

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

cat file2

إذا رأيت المخرجات المتوقعة (في هذه الحالة، محتويات file2)، فإن ذلك يؤكد أن استعادة البيانات كانت ناجحة.

ملخص

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

النقاط الرئيسية:

  • Reflog هو صديقك: استخدم git reflog للعثور على الالتزامات المفقودة.
  • إعادة التعيين: استخدم git reset --hard <commit-hash> للعودة إلى الالتزامات السابقة عند الحاجة.
  • المثابرة: لا تشعر بالذعر؛ يوفر Git آليات للتعافي من مثل هذه الإجراءات.

مع هذه النصائح، ستكون أكثر آمادهً للتعامل مع الأخطاء المتعلقة بأوامر Git في المستقبل!