التراجع عن اضافة التغييرات في git

كثيراً مايحدث ان تقوم بإضافة تعديلات بشكل غير مقصود باستخدام

git add .

وللتراجع للحالة السابقه لديك عدة خيارات

1- التراجع مع ابقاء حالة الملفات كما هي

git reset [optional path/filename ...]

ملاحظة

يجب تحديد الملفات بمسارها في الامر السابق, ترك الخيار فارغ سينفذ الامر على المستودع بأكمله.

2- التراجع مع التخلص من جميع التعديلات والملفات

git reset --hard

ملاحظات

الامر السابق سينفذ على المستودع بأكمله

يجب استخدام الامر الثاني بحرص لتفادي فقدان اي تعديلات مهمة وذلك بتنفيذ الامر git status للتأكد من الملفات التي ستتأثر بتنفيذه.

إنشاء اتصال SOCKS عبر SSH

SOCKS او Socket Secure هو بروتوكول يستخدم لانشاء خادم وسيط ويتميز بالسرعة مقارنةً بـ بروتوكول VPN والسبب يكمن في ان VPN يقوم بتشفير البيانات المتراسلة وذلك مايسبب له البطئ. في المقابل SOCKS لايقوم بتشفير جميع البيانات وتلك سبب سرعتة.

ولكن في هذه المقالة سيتم استخدامه عبر SSH والذي بدوره سيقوم بتشفير البيانات المتراسلة

اولاً سأقوم بالاتصال بالخادم بالاعدادات التالية

ssh -CND 60245 [email protected]
-C لضغط البيانات المتراسلة 
-N لاستخدام الاتصال كـ port forwarding فقط
-D لتحديد منفذ الاتصال والذي سيكون 60245

لإعداد متصفح (Firefox) توجه الى

Preferences → Network Proxy → Settings

ضع الاعدادات كما في الصورة التالية

firefox socks settings

لإعداد النظام بالكامل للإتصال عبر SOCKS في (GNOME) توجه الى

Network → Network Proxy → Settings

ثم ضع الاعدادات كما في الصورة التالية

GNOME network socks settings

تم الاعداد بنجاح.

للتحقق من الايبي الجديد اضغط هنا

Posted on Categories Linux

Git Patches

تحدثت في المقاله السابقه عن Git Bundle’s وعن طريقة نقل مستودع بالكامل ولكن في بعض الاحيان كل التعديلات الجديده مقتصره على فرع واحد وغير معقده.

ولهذا يقدم لنا Git الامر format-patch والذي يقوم بإنشاء ملف او عدة ملفات (لكل commit ملف منفصل) تحتوي على سجل للتعديلات والتي يمكن اعتمادها على نسخه اخرى من المشروع حتى لو لم تُستخدم Git لادارة النسخ فيه.

الامر السابق يوفر لنا طريقتين للتعامل معه

  1. إنشاء ملف لكل commit
  2. إنشاء ملف واحد يجمع كل ال commits

سأقوم بتنفيذ الامر التالي لانشاء patch

git format-patch 340c9e89..master

والذي سيقوم بدوره بإنشاء ملف لكل commit كالتالي

0001-update-ar-translation.patch
0002-update-README.patch
0003-upgrade-libraries.patch
0004-fix-invalid-date.patch
0005-add-auto-email-reminder.patch

او بتنفيذ الامر التالي

git format-patch 340c9e89..master --stdout > last-5-commits.patch

والذي سيقوم بإنشاء ملف بأسم last-5-commits.patch ويحتوي على كل ال commits السابقه في ملف واحد

ويمكن اعتماد الpatches بأحدى الطريقتين

  1. git apply last-5-commits.patch
  2. git am last-5-commits.patch

سيقوم الامر الاول باعتماد التعديلات في المشروع الحالي ولكن يجب ايداع التغييرات الجديده (لايشترط ان يكون المشروع الحالي يعمل على Git).

اما الامر الثاني فسيقوم باعتماد التعديلات في المشروع الحالي مع ايداع التغييرات وسيكون جاهز للدفع الى الخادم.