Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©

Best Practices For Writing Clean Commits in Git

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • •
  • ٢٣ يوليو، ٢٠٢٤
  • •
  • 2 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email
Best Practices For Writing Clean Commits in Git
Best Practices For Writing Clean Commits in Git
  • Version Control
  • DevOps

المقدمة

مفيش يوم بيعدي تقريبًا الا وفيه Commits محتاجين نعملها على الـ Version Control في مشاريع مختلفة , وده خصوصا لو احنا شغالين في شركة أو مع مطورين تانيين في أي مشروع.

وعشان نستفيد من الـ Version Control أقصى استفادة ممكنة وانه يكون بيحقق الغرض المطلوب منه ويسهل علينا حياتنا محتاجين نعرف ازاي نكتب Commits بشكل فعال عشان نحقق ده.

في المقال ده هنعرف مع بعض ايه اللي خصائص الـ Commits الكويسة وايه هي الـ Best Practices اللي موجودة لكتابة الـ Commits لانها بالتأكيد هتفرق في الـ Career بتاعك.


ايه هو الـ Commit ؟

قبل ما نبدأ ونتكلم عن الـ Best Practices لكتابة الـ Commit محتاجين نعمل Refreshing سريع كده ونعرف اصلا ايه ده ؟

الـ Commit بيعبر عن حالة التغييرات بتاعتك في وقت محدد , فلو جينا نعمل Commit مثلا في Codebase معين .. الـ Commit هو بيوصف الحالة اللي فيها الـ Codebase ده في الوقت ده , ولحد ما يحصل Commit تاني , فالـ Commit التاني ده هيوصف الحالة اللي اصبح عليها الـ Codebase في الوقت اللي هيحصل فيه وهكذا.

والـ Commits طبعًا ممكن تشتمل على حاجات كتير زي Metadata وليكن الرسالة اللي مفروض الـ Commit يظهرها واسم صاحب الـ Commit والوقت , وكل ده بيتم استعماله عشان نعرف نحدد التغييرات اللي حصلت في النظام كانت ايه وحصلت امتة بشكل مؤرخ.


Best Practices for Writing Commits

تكون مُوصفة - Descriptive

الـ Commit Message اللي بنكتبها محتاجين انها تكون مُوصفة يعني بتشرح التغيير اللي حصل وحصل ليه , ومفترض انها تكون بتقدم لأي حد يقرأها مختصر للي بيعمله التغيير عشان يفهموا التغيير ده بيعمل ايه من غير ما يضطروا يشوفوا حاجة زيادة.

لو جينا نبص على مثال لكتابة Commit مبتحققش الكلام ده , هنلاقي ان اغلبنا اتعرض لده وكلنا كنا بنكتب Commits بالشكل ده :

git commit -m "Fix bug"
git commit -m "WIP"
git commit -m "Final Test"

وما الى ذلك .. وأغلبنا كان بيعمل كده خصوصا في مشاريعه الشخصية. ولكن المفترض لما تيجي تشتغل مع فريق ومع ناس تانية الـ Commit كون موصف بالشكل ده:

git commit -m "Fix null pointer exception in registeration response"
git commit -m "Add registration form validator"

تكون محددة - Focused to The Point

الـ Commit Message اللي بنكتبها محتاجين انها تكون محددة بمعنى انها تكون بتمثل تغيير واحد فقط وما تكونش بتشرح أكتر من تغيير , وتكون مختصرة وفيها الزتونة بحيث اللي يقراها يفهم التغيير ده بيعمل ايه.

لو جينا نبص على مثال لكتابة Commit ما بتحققش الكلام ده :

git commit -m "Add registration form validator and update the form UI"
git commit -m "Fix Issues"

وطبعا هنا مش بيحقق الكلام اللي بنقوله ، فعشان نعالج ده محتاجين الموضوع يكون محدد ويخصص Commit Message محددة لكل تغيير بيحصل

git commit -m "Add registration form validator"
git commit -m "Update registration form UI"

تحديد النطاق - Scoped

الـ Commit Message اللي بنكتبها محتاجين انها تكون في نطاق محدد ، بمعنى انه ما ينفعش اروح اعمل Commit Message تكون بتزود Feature جديدة في النظام عندي , وكمان بتـ Fix Bug في نفس الوقت. فما ينفعش نكتب Commit Message بالشكل ده :

git commit -m "Fix null pointer exception in registration response and Add User Authentication"
git commit -m "Fix registration email validation and update readme"

طبعًا الموضوع ده سيء جدًا وبيبوظ أهمية الـ Version Control والاستفادة اللي ممكن نحصل عليها لان تغيير زي دي باه Coupled معاه حاجات تانية فلو حبينا في وقت من الأوقات نـ Revert التغييرات اللي حصلت دي ، هنقع في مشكلة كبيرة وهي اننا هنـ Revert كل اللي كان في التغيير واللي ممكن ميكونش ليه أثر في بعض المشكلة.

فالأفضل دايما اننا نفصل كل جزء خاص بنطاق لوحده في Commit لوحده.

git commit -m "Renaming registration methods"
git commit -m "Add user authentication"

تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.
SubstackEqraatech - اقرأ-تِك

تكون متوافقة مع الارشادات العامة للـ Conventional Commit Guidelines

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!

مقالات ذات صلة

  • Git Aliases 1 min read

    Git Aliases

    Khaled Abdelfattah Khaled Abdelfattah • ١٣ أغسطس، ٢٠٢٤
    Khaled Abdelfattah Khaled Abdelfattah
    Software Technical Writer
    • Website
  • How Monorepo Effectively Manages Software Projects

    How Monorepo Effectively Manages Software Projects

    Abdalsalam Kelani Abdalsalam Kelani • ١٦ يوليو، ٢٠٢٤
    Abdalsalam Kelani Abdalsalam Kelani
    Software Engineer
    • Website
  • Continuous Integration 1 min read

    Continuous Integration

    Khaled Abdelfattah Khaled Abdelfattah • ٢٤ فبراير، ٢٠٢٤
    Khaled Abdelfattah Khaled Abdelfattah
    Software Technical Writer
    • Website
  • Git Commit Message Cheatsheet 1 min read

    Git Commit Message Cheatsheet

    Khaled Abdelfattah Khaled Abdelfattah • ٢١ ديسمبر، ٢٠٢٣
    Khaled Abdelfattah Khaled Abdelfattah
    Software Technical Writer
    • Website
  • 5 Takeaways for README.MD In a Nutshell 1 min read

    5 Takeaways for README.MD In a Nutshell

    Ahmed Emad Ahmed Emad • ٢٣ أكتوبر، ٢٠٢٣
    Ahmed Emad Ahmed Emad
    Software Architect
    • Website
  • Version Control In a Nutshell

    Version Control In a Nutshell

    Alaa Elkzaz Alaa Elkzaz • ٢٣ أكتوبر، ٢٠٢٣
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • Deep Dive Into Code Review Checklist 1 min read

    Deep Dive Into Code Review Checklist

    Hanan Shaban Hanan Shaban • ٩ يوليو، ٢٠٢٣
    Hanan Shaban Hanan Shaban
    Program Manager
    • Website
اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©