في هذه الصفحة
المقدمة
مفيش يوم بيعدي تقريبًا الا وفيه 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"
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉