أسرار Git الخفية: 7 أوامر قوية لتعزيز إنتاجيتك كمطور

دقائق القراءة: 5

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

تتبع التغييرات في ملف معين: فهم عميق لتاريخ الملفات

قد يكون تتبع التغييرات في المشاريع الكبيرة أمراً معقداً، خاصة عندما يعمل عدة مطورين على نفس قاعدة الكود. لفهم دقيق لكيفية تعديل ملف معين (ومتى ومَن قام بذلك)، يمكنك الاستعانة بالأمر العريق git log، ولكن مع بعض الإضافات الذكية:

$ git log --since="3 weeks" -p index.html

يضمن استخدام الخيار -p عرض التغييرات الفعلية كـ “فروقات” (diffs)، وليس فقط بيانات الالتزام الوصفية (commit’s metadata). بينما يساعد الخيار --since في تحديد إطار زمني حديث للبحث، مما يسهل عليك التركيز على التعديلات الأخيرة.

التراجع عن آخر التزام (Commit) بفعالية

في بعض الأحيان، قد نعتقد أن مجموعة من التغييرات جاهزة للالتزام (commit)، ولكن فور إتمام الالتزام، ندرك أننا كنا متسرعين. قد تكون هناك تغييرات مفقودة، أو ربما قمنا بالالتزام على الفرع الخاطئ، أو حدثت مشاكل أخرى متعددة. الأمر المؤكد الوحيد هو أننا نرغب في التراجع عن هذا الالتزام الأخير وإعادة تغييراتنا إلى منطقة العمل (Working Copy)! يمكننا تحقيق ذلك باستخدام الأمر git reset مع مجموعة خاصة من الخيارات:

$ git reset --mixed HEAD~1

يضمن الخيار --mixed عدم تجاهل التغييرات التي كانت موجودة في الالتزامات التي يتم التراجع عنها. بدلاً من ذلك، يتم الاحتفاظ بها كتغييرات محلية في منطقة العمل. يعد استخدام الترميز HEAD~1 اختصاراً ممتازاً لتحديد “الالتزام الذي يسبق الأخير”، وهو بالضبط ما نحتاجه للتراجع عن آخر التزام.

مقارنة الملفات بين الفروع (Branches) المختلفة

بعد إجراء بعض التغييرات على ملف في فرع ميزات (feature branch)، قد تحتاج إلى مقارنته بنسخته الموجودة في فرع آخر. لتوضيح الأمر بمثال عملي، لنفترض أنك حالياً على الفرع feature/login وترغب في فهم كيفية اختلاف الملف myFile.txt عن نسخته الموجودة في الفرع develop. يمكن للأمر git diff إنجاز هذه المهمة إذا قمت بتزويده بالمعاملات التالية:

$ git diff develop -- myFile.txt

ستظهر لك بعد ذلك فروقات (diff) واضحة ومفصلة توضح بالضبط كيف يختلف ملفك عن نسخته في الفرع الآخر.

استخدام git switch بدلاً من git checkout: تبديل الفروع بوضوح

يتمتع الأمر git checkout بالعديد من المهام والمعاني المختلفة، مما قد يسبب التباساً. لهذا السبب، قرر مجتمع Git مؤخراً إصدار أمر جديد: git switch. كما يوحي اسمه، تم تصميم هذا الأمر خصيصاً لمهمة تبديل الفروع:

$ git switch develop

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

التبديل السريع بين فرعين: اختصار يوفّر الوقت

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

$ git switch -

باستخدام علامة الشرطة (-) كمعامل وحيد له، سيقوم الأمر git switch بالانتقال إلى الفرع النشط سابقاً. وكما ذكرنا، يمكن أن يكون هذا مفيداً جداً إذا كنت تضطر للتنقل بين فرعين عدة مرات.

استخدام git restore للتراجع عن التغييرات المحلية

حتى وقت قريب، كان يتعين عليك استخدام شكل من أشكال الأمر git checkout أو git reset عندما ترغب في التراجع عن التغييرات المحلية. ولكن مع الأمر git restore (الجديد نسبياً)، أصبح لدينا الآن أمر صُمم خصيصاً لهذا الغرض. هذا يميزه عن checkout و reset، لأن هذين الأمرين لهما العديد من حالات الاستخدام الأخرى. إليك نظرة سريعة على أهم المهام التي يمكنك إنجازها باستخدام git restore:

# Unstaging a file, but leaving its actual changes untouched
$ git restore --staged myFile.txt
# Discarding your local changes in a certain file
$ git restore myFile.txt
# Undoing all of the local changes in the working copy (be careful)
$ git restore .

استعادة نسخة تاريخية من ملف باستخدام git restore

يقدم الأمر git restore خياراً آخر مفيداً للغاية يُسمى --source. بمساعدة هذا الخيار، يمكنك بسهولة استعادة أي نسخة سابقة من ملف معين:

$ git restore --source 6bcf266b index.html

ما عليك سوى ذكر تجزئة المراجعة (revision hash) للنسخة التي ترغب في استعادتها (واسم الملف بالطبع). إذا كنت بحاجة إلى مساعدة في العثور على المراجعة الصحيحة، يمكنك استخدام عميل Git مكتبي مثل Tower: فباستخدام ميزة مثل “سجل الملفات” (File History) الخاصة به، يمكنك بسهولة فحص التغييرات التي حدثت في ملف معين فقط، ثم تحديد مراجعة لاستعادتها.

اكتشف القوة الكامنة في Git

على الرغم من الشهرة الواسعة التي يحظى بها Git اليوم، إلا أن جزءاً كبيراً من قوته الحقيقية لا يزال مجهولاً للكثيرين. صحيح أنه يمكنك “النجاة” باستخدام عدد قليل من الأوامر الأساسية مثل commit و push و pull، لكن هذا أشبه بقيادة سيارة فيراري بالسرعة الأولى فقط! إذا كنت مستعداً للتعمق أكثر، ستكتشف بعض الميزات الأكثر قوة في Git. هذه الميزات لا تملك القدرة على جعلك أكثر إنتاجية فحسب، بل ستصقلك لتصبح مطوراً أفضل في نهاية المطاف! إذا كنت ترغب في تعلم المزيد عن Git، أوصيك بالاطلاع على هذه الموارد المجانية:

  • The First Aid Kit for Git: تعلم كيفية التراجع عن الأخطاء والتعافي منها في Git من خلال سلسلة من مقاطع الفيديو القصيرة والبسيطة.
  • The Git Cheat Sheet: ورقة غش (cheat sheet) شائعة لتكون أهم الأوامر في متناول يدك دائماً.

الخلاصة التقنية

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *