hubGit

عرض التغييرات على ملف في GIT

أحياناً تقوم ببعض التغييرات على ملف ما وتريد استعادة نسخة قديمة منه. في هذا المقتطف سأوضح لك كيفية القيام بذلك في GIT.

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

استعادة ملف معين إلى إصدار سابق باستخدام Git

  1. عرض تاريخ الملف: لعرض تاريخ التعديلات التي تم إجراؤها على ملف معين، استخدم الأمر git log مع تحديد المسار إلى الملف:
   git log -- <مسار_الملف>
Bash

ستحصل على قائمة بالإصدارات السابقة لهذا الملف مع معرفات الالتزام (commit IDs).

  1. استعادة الملف إلى إصدار معين: بعد تحديد معرف الالتزام (commit ID) الذي يحتوي على النسخة التي تريد استعادتها، يمكنك استعادة الملف باستخدام الأمر git checkout:
   git checkout <commit_id> -- <مسار_الملف>
Bash

هذا الأمر سيستبدل محتوى الملف الحالي بالنسخة الموجودة في الالتزام المحدد، لكنه لن يغير حالة المؤشر الرئيسي (HEAD) أو أي ملفات أخرى في المستودع.

  1. تأكيد التغييرات: إذا كنت راضيًا عن التغييرات، يمكنك إضافة الملف إلى المرحلة المؤقتة والالتزام بالتغييرات:
   git add <مسار_الملف>
   git commit -m "استعادة <اسم_الملف> إلى الإصدار <commit_id>"
Bash

مثال عملي

لنفترض أن لديك ملف باسم example.txt وتريد استعادة النسخة التي كانت موجودة في الالتزام الذي يحمل المعرف a1b2c3d4:

  1. اعرض تاريخ التعديلات على الملف:
   git log -- example.txt
Bash

سترى شيئًا مثل:

   commit a1b2c3d4e5f6g7h8i9j0
   Author: اسم المؤلف <بريد_الإلكتروني>
   Date:   تاريخ

       الرسالة المتعلقة بالالتزام
Bash
  1. استعادة الملف إلى الإصدار المطلوب:
   git checkout a1b2c3d4 -- example.txt
Bash
  1. أضف الملف إلى المرحلة المؤقتة واصنع التزامًا جديدًا:
   git add example.txt
   git commit -m "استعادة example.txt إلى الإصدار a1b2c3d4"
Bash

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

ملاحظة:

  • كن حذرًا عند استخدام git checkout: إذا كنت تستخدمه مع ملفات محددة، فإنه لا يؤثر على بقية المستودع. ومع ذلك، إذا قمت بتحديد فرع أو حالة، فقد تفقد التعديلات غير المؤكدة.
  • استخدام git restore: في الإصدارات الأحدث من Git، يمكنك أيضًا استخدام git restore كبديل لـ git checkout لاستعادة الملفات.

مثلاً:

git restore --source=<commit_id> --staged <مسار_الملف>
Bash

هذه الأوامر تساعدك في إدارة واستعادة التعديلات في مستودع Git بشكل فعال.

استخدام git show لاستعادة نسخة قديمة من ملف

يمكنك استخدام الأمر git show لعرض محتويات الملف من التزام محدد ثم حفظه، أو مقارنته بالنسخة الحالية. دعنا نشرح الخطوات:

  1. اعرض تاريخ التعديلات للملف: استخدم git log لمعرفة الالتزامات السابقة ومعرفاتها (commit IDs):
   git log -- <مسار_الملف>
Bash
  1. اعرض محتويات الملف في الالتزام المطلوب: استخدم git show لعرض محتوى الملف كما كان في الالتزام المحدد:
   git show <commit_id>:<مسار_الملف>
Bash

على سبيل المثال، إذا كان معرف الالتزام هو a1b2c3d4 والملف هو example.txt:

   git show a1b2c3d4:example.txt
Bash

سيعرض هذا الأمر محتويات الملف example.txt كما كانت في الالتزام a1b2c3d4.

  1. استعادة الملف من الالتزام: لاستعادة النسخة القديمة وحفظها إلى ملف، يمكنك إعادة توجيه المخرجات إلى ملف جديد أو نفس الملف إذا أردت:
   git show <commit_id>:<مسار_الملف> < <مسار_الملف_الجديد>
Bash

إذا كنت ترغب في الكتابة فوق الملف الحالي:

   git show a1b2c3d4:example.txt > example.txt
Bash
  1. مراجعة وحفظ التغييرات: بعد استعادة الملف، يمكنك مراجعته وإذا كان جيدًا، أضفه إلى المرحلة المؤقتة واصنع التزامًا جديدًا:
   git add <مسار_الملف>
   git commit -m "استعادة <اسم_الملف> إلى الإصدار <commit_id> باستخدام git show"
Bash

مثال عملي

لنفترض أنك تريد استعادة ملف example.txt إلى حالته في الالتزام a1b2c3d4:

  1. اعرض محتوى الملف في الالتزام a1b2c3d4:
   git show a1b2c3d4:example.txt
Bash
  1. لاستعادة هذا المحتوى إلى example.txt:
   git show a1b2c3d4:example.txt > example.txt
Bash
  1. إذا كنت تريد حفظ المحتوى في ملف جديد (للمقارنة لاحقًا مثلاً):
   git show a1b2c3d4:example.txt > example_old.txt
Bash
  1. أضف الملف إلى المرحلة المؤقتة والتزم بالتغييرات إذا كنت راضيًا:
   git add example.txt
   git commit -m "استعادة example.txt إلى الإصدار a1b2c3d4 باستخدام git show"
Bash

ملاحظات إضافية

  • عدم التأثير على الحالة الحالية: استخدام git show لعرض واستعادة الملفات لا يؤثر على الحالة الحالية للفروع أو الملفات الأخرى في المستودع، مما يجعله آمنًا للتفقد بدون تغيير أي شيء.
  • إعادة التوجيه إلى ملف: تذكر أنه عند استخدام إعادة التوجيه (>)، سيتم الكتابة فوق الملف المستهدف. تأكد من أنك لا تكتب فوق شيء تريده.

هذه الطريقة تعتبر عملية وفعالة لاستعراض واستعادة الإصدارات القديمة من الملفات باستخدام Git دون الحاجة إلى تغيير الحالة الحالية للمستودع.