كيف يمكنني إعادة ملف إلى commit معين في Git؟

Git هو نظام التحكم في الإصدارات الأكثر شهرة واستخداماً بين المطورين. يمكن لـ Git مساعدتك في إدارة شفرة المصدر ومتابعة تاريخ التعديلات التي أُجريت على الملفات داخل المشروع. في بعض الأحيان، قد تحتاج إلى إعادة ملف إلى commit معين في Git، سواء لإصلاح خطأ أو للعودة إلى حالة سابقة من الملف.

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

ما هو commit في Git؟

في Git، يشير commit إلى نقطة محددة في تاريخ المشروع حيث تم حفظ التغييرات. كل commit يحتوي على تغييرات تم إجراؤها على الملفات داخل المشروع، بالإضافة إلى معلومات إضافية مثل المؤلف والتاريخ ورسالة التوثيق. مع مرور الوقت، يقوم Git بإنشاء سلسلة من commits التي تشكل تاريخ التعديلات على المشروع.

كل commit يتم تحديده بواسطة hash فريد (معرف) يتكون من سلسلة من الأحرف والأرقام. على سبيل المثال:

abc12345def67890ghijklmnopqrstuvwx

الطريقة الأولى: استخدام git checkout لإعادة ملف إلى commit معين

أحد أبسط الطرق لإعادة ملف إلى commit معين هو استخدام الأمر git checkout. يقوم هذا الأمر بإرجاع الملف إلى الحالة التي كان عليها في commit معين، ويمكنك تحديد commit باستخدام معرّف الـ hash الخاص به.

الخطوات:

  1. أولاً، افتح الطرفية أو سطر الأوامر.
  2. استخدم الأمر التالي للانتقال إلى الدليل الذي يحتوي على مستودع Git الخاص بك:
  3. cd /path/to/your/repository
  4. ابحث عن الـ commit الذي تريد إعادة الملف إليه باستخدام الأمر:
  5. git log
  6. انسخ معرّف الـ hash الخاص بالـ commit الذي تريد العودة إليه.
  7. استخدم الأمر التالي لإرجاع الملف إلى الحالة التي كان عليها في ذلك الـ commit:
  8. git checkout  -- path/to/your/file
  9. سيتم استرجاع الملف إلى النسخة التي كانت موجودة في الـ commit المحدد.

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

الطريقة الثانية: استخدام git restore لإعادة ملف إلى commit معين

في الإصدارات الأحدث من Git، تم إضافة الأمر git restoregit checkout. هذا الأمر يجعل العملية أكثر وضوحًا وسهولة.

الخطوات:

  1. كما في الطريقة السابقة، افتح الطرفية وانتقل إلى مستودع Git الخاص بك:
  2. cd /path/to/your/repository
  3. استخدم الأمر git log للبحث عن commit الذي يحتوي على التغييرات التي تريد استرجاعها:
  4. git log
  5. انسخ معرّف الـ hash الخاص بالـ commit.
  6. استخدم الأمر التالي لإرجاع الملف إلى الحالة المحددة في الـ commit:
  7. git restore --source= path/to/your/file

تتميز هذه الطريقة بأنها أبسط وأقل عرضة للأخطاء مقارنةً باستخدام git checkout. يتم تطبيق التغييرات مباشرة على الملف دون تغيير باقي الملفات أو السجل.

الحذر عند استخدام git checkout و git restore

عند استخدام git checkout أو git restore لإرجاع ملف إلى commit معين، من المهم أن تتأكد من أنك لا تفقد التغييرات الحالية في الملف الذي تقوم بتغييره. إذا كانت لديك تعديلات غير مؤكدة في الملف، يجب عليك حفظ هذه التعديلات أولاً باستخدام أمر git add و git commit أو استخدام git stash لحفظ التعديلات مؤقتًا.

حفظ التعديلات باستخدام git stash:

git stash push -m "Saving current changes before restoring file"

بعد تنفيذ هذا الأمر، يمكنك العودة لاحقًا لاستعادة التعديلات المحفوظة باستخدام:

git stash pop

الطريقة الثالثة: إعادة الملف إلى commit معين باستخدام git reset

هناك طريقة أخرى لإرجاع الملف إلى commit معين باستخدام git reset، لكنها تُستخدم بشكل أقل مقارنة بالطريقتين السابقتين. عند استخدام git reset، يمكنك تحديد commit معين والعودة إلى الحالة السابقة للملف، ولكن مع مراعاة أن هذا قد يؤثر على بقية المشروع.

الخطوات:

  1. افتح الطرفية وانتقل إلى مستودع Git:
  2. cd /path/to/your/repository
  3. استخدم الأمر التالي للانتقال إلى commit معين:
  4. git reset --hard 
  5. ثم استخدم git checkout لاستعادة الملفات من commit جديد:
  6. git checkout path/to/your/file

تحذير: تأكد من أنك قد حفظت التعديلات قبل استخدام git reset لأن هذا الأمر قد يؤدي إلى فقدان بعض التعديلات غير الملتزمة.

الخاتمة

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

إذا كنت بحاجة إلى المزيد من التوضيحات أو إذا كان لديك أي أسئلة إضافية حول Git أو كيفية استخدامه في مشاريعك، لا تتردد في طرحها.