تنفيذ commit — ما هو، قواعد التنسيق والعمل مع Git

المؤلف: IT Sectr نُشر: 2026-07-31 وقت القراءة: 6 دق

تنفيذ commit هو إجراء حفظ التغييرات في نظام التحكم بالنسخ Git، مما ينشئ نقطة حفظ في تاريخ المشروع. يتضمن كل commit تجزئة (hash) والمؤلف والتاريخ ووصف التغييرات. وفقًا لـ GitHub Octoverse 2024، يتم إنشاء أكثر من 50 مليون commit يوميًا حول العالم. Commit هو الوحدة الأساسية للعمل مع التحكم بالنسخ، والتي بدونها لا يمكن تصور تطوير البرمجيات الحديثة.

النقاط الرئيسية

  • تنفيذ commit — حفظ التغييرات في Git مع وصف التعديلات التي تم إجراؤها
  • كل commit له تجزئة فريدة ومؤلف وتاريخ ورسالة
  • الذرية — كل commit يحتوي على تغيير منطقي واحد
  • رسالة commit يجب أن تجيب على سؤال لماذا تم إجراء التغيير
  • يمكن تعديل commits وتراجعها ودمجها عبر git amend و rebase

ما هو commit في Git

commit في Git هو كائن يخزن حالة ملفات المشروع في وقت معين. يحتوي كل commit على لقطة لجميع الملفات المتتبعة، ومرجع إلى commit الأب، وبيانات وصفية. على عكس أنظمة التحكم بالنسخ الأخرى، يستخدم Git تخزينًا موجهًا بالمحتوى — يتم تحديد كل كائن بتجزئة SHA-1 لمحتواه.

عندما يقوم المطور بتنفيذ commit للتغييرات، ينشئ Git كائن commit يخزن: كائن tree (هيكل الملفات)، تجزئة commit الأب، المؤلف، committer، التاريخ والرسالة. هذا الكائن غير قابل للتغيير — بمجرد إنشائه، لا يمكن تعديل commit دون تغيير تجزئته. يضمن عدم القابلية للتغيير سلامة تاريخ المشروع.

bash
# تجهيز التغييرات وتنفيذ commit
git add index.html style.css
git commit -m "Fix responsive layout on mobile devices"

# عرض تفاصيل commit
git log --oneline -3
git show HEAD

# تجهيز جميع التغييرات وتنفيذ commit في خطوة واحدة
git commit -a -m "Update dependencies to latest versions"

تشكل commits رسمًا بيانيًا لا دوريًا موجهًا (DAG)، حيث يشير كل commit جديد إلى السابق. يتيح ذلك التنقل عبر التاريخ وتراجع التغييرات وتحليل تطور قاعدة البيانات. فهم هيكل DAG في Git هو الأساس للعمل المتقدم مع commits.

كيفية تنفيذ commit للتغييرات بشكل صحيح

تتكون عملية commit في Git من مرحلتين: إضافة التغييرات إلى منطقة staging (الفهرس) وإنشاء commit. تسمح منطقة staging للمطور باختيار التغييرات المحددة التي ستُدرج في commit، حتى لو تم تعديل العديد من الملفات في دليل العمل.

قاعدة الذرية هي المبدأ الأساسي لـ commit جيد. يجب أن يحتوي كل commit على تغيير منطقي واحد. إذا قام المطور بإصلاح خطأ وإعادة هيكلة الكود — فهما commitان مختلفان. commits الذرية تبسط مراجعة الكود وتراجع التغييرات وتحليل التاريخ.

قبل تنفيذ commit، يجدر التحقق: ما إذا كان هناك مخرجات تصحيح أخطاء أو كتل معلقة أو تغييرات عرضية في الكود. لهذا يُستخدم الأمر git diff --cached الذي يظهر ما سيدخل بالضبط في commit. تحقق إضافي عبر git status يعرض قائمة الملفات في منطقة staging.

  • تحقق من التغييرات — git diff --cached يظهر ما سيدخل في commit
  • تحقق من الجودة — يجب أن يجتاز الكود المدقق والاختبارات قبل commit
  • اكتب رسالة — وصف واضح للغرض من التغيير
  • تحقق من الملفات المضافة — git status يؤكد قائمة الملفات

قواعد كتابة رسائل commit

رسالة commit هي توثيق التغيير للمطورين المستقبليين. الرسالة الجيدة تجيب على الأسئلة: ما الذي تغير ولماذا. أصبحت اتفاقية Conventional Commits (فريق Angular، 2016) معيارًا للعديد من المشاريع وتحدد التنسيق: النوع(النطاق): الوصف.

النوعالغرضمثال
featوظيفة جديدةfeat(api): add user registration endpoint
fixإصلاح خطأfix(auth): resolve token refresh issue
refactorإعادة هيكلة دون تغيير السلوكrefactor(core): extract payment validator
docsتوثيقdocs(readme): update installation guide
testإضافة اختباراتtest(cart): add unit tests for checkout

تتكون رسالة commit الجيدة من عنوان (حتى 50 حرفًا) ونص (اختياري، حتى 72 حرفًا في السطر). يُكتب العنوان بصيغة الأمر: «Add» وليس «Added» أو «Adds». Capitalization والنقطة في نهاية العنوان لا تُستخدم — هذه اتفاقية Git دولية.

الرسالة السيئة: «fix things» أو «update» — لا تحمل معلومات. بعد شهر، لن يتمكن المطور من فهم ما تم تغييره بالضبط ولماذا. الرسالة الجيدة: «fix(payment): handle timeout in stripe callback» — يتضح فورًا ما وأين تم إصلاحه.

الأخطاء الشائعة عند تنفيذ commit

المطورون، خاصة المبتدئين، غالبًا ما يرتكبون أخطاء نموذجية عند تنفيذ commit. الأكثر شيوعًا هو commit كبير جدًا يخلط عشرات التغييرات. لا يمكن تراجع هذا commit جزئيًا، وتصبح مراجعة الكود عذابًا.

ثاني أكثر الأخطاء شيوعًا هو رسالة commit رديئة. الرسائل مثل «fix» أو «update» أو «changes» أو «wip» لا توفر سياقًا للمطورين المستقبليين. بعد ستة أشهر، لن يتذكر أحد ما تم إصلاحه بالضبط. القاعدة بسيطة: تخيل أنك بعد عام تنظر في التاريخ وتحاول العثور على تغيير معين.

الخطأ الثالث هو تنفيذ commit لرمز غير مُجمّع أو غير عامل. بعد commit، يجب أن يترجم الرمز على الأقل. عدم كسر البناء هو متطلب أساسي لأي commit في فرع مشترك. لهذا، يتم تشغيل البناء والاختبارات قبل commit.

الخطأ الرابع هو تنفيذ commit لبيانات سرية. مفاتيح API وكلمات المرور والرموز يجب ألا تصل إلى تاريخ Git. إذا تم commit سر بالفعل، فلا يكفي حذفه في commit جديد، بل يجب حذفه من التاريخ بأكمله عبر git filter-branch أو BFG Repo-Cleaner.

التقنيات المتقدمة للعمل مع commits

يوفر Git أدوات لإدارة تاريخ commits. من أكثرها فائدة git commit --amend، الذي يسمح بتكميل آخر commit بتغييرات جديدة أو تصحيح الرسالة. هذا مفيد إذا نسي المطور تضمين ملف أو أخطأ في الرسالة.

bash
# تصحيح رسالة آخر commit
git commit --amend -m "fix(auth): correct token validation logic"

# إضافة ملف تم نسيانه إلى آخر commit
git add missed-file.txt
git commit --amend --no-edit

# Rebase تفاعلي لآخر 3 commits
git rebase -i HEAD~3

Interactive rebase هي أداة قوية لإعادة كتابة التاريخ. تسمح بدمج commits (squash) وتغيير الرسائل (reword) وإعادة الترتيب (reorder) وحذف commits (drop). ومع ذلك، يغير rebase التاريخ، لذلك يُستخدم فقط مع commits المحلية التي لم تُدفع بعد إلى المستودع البعيد.

هناك طريقتان لتراجع commits. git revert ينشئ commit جديدًا يلغي تغييرات السابق — طريقة آمنة تحفظ التاريخ. git reset يحذف commits من التاريخ — خطير إذا كانت commits قد دُفعت بالفعل. في التطوير الجماعي، يُستخدم git revert فقط لتراجع commits المنشورة.

الأسئلة الشائعة

ماذا يعني تنفيذ commit في Git؟

تنفيذ commit يعني إنشاء نقطة حفظ للتغييرات في Git. يسجل commit الحالة الحالية للملفات في تاريخ المشروع مع وصف ما تغير ولماذا. كل commit له معرف فريد (SHA-1 hash) وهو جزء من سلسلة تغييرات متصلة.

كم مرة يجب تنفيذ commits في Git؟

يوصى بتنفيذ commit بعد كل تغيير مكتمل منطقيًا، حتى لو كان صغيرًا. التكرار الأمثل هو commit واحد لكل مهمة أو إصلاح. لا يجب تنفيذ commit كل 5 دقائق، ولكن أيضًا لا ينبغي تراكم التغييرات لـ عدة أيام دون commit واحد.

ما هو commit الذري؟

commit الذري يحتوي على تغيير منطقي واحد — مهمة واحدة أو إصلاح خطأ واحد أو وظيفة جديدة واحدة. لا يخلط تغييرات مختلفة في commit واحد. مزايا commits الذرية: سهولة التراجع وتاريخ واضح ومراجعة كود سهلة.

كيفية تراجع commit في Git؟

لتراجع commit منشور، استخدم git revert <commit-hash> — ينشئ commit جديدًا يلغي التغييرات. للـ commits المحلية، يمكنك استخدام git reset HEAD~1، ولكن فقط إذا لم يكن commit قد دُفع بعد. git revert هي الطريقة الآمنة للعمل الجماعي.

هل يمكن تعديل commit تم إنشاؤه بالفعل؟

نعم، قبل الدفع إلى المستودع البعيد. استخدم git commit --amend لتعديل آخر commit أو git rebase -i لتعديل عدة commits. بعد الدفع، لا يُنصح بتعديل التاريخ — قد يسبب مشاكل للمطورين الآخرين إذا كانوا قد دفعوا تغييراتهم بالفعل.

الخلاصة

  • تنفيذ commit — حفظ التغييرات في Git مع وصف التعديلات
  • الذرية — commit واحد = تغيير منطقي واحد
  • الرسالة — استخدم Conventional Commits: النوع(النطاق): الوصف
  • التحقق — يجب أن يترجم الكود ويجتاز الاختبارات قبل commit
  • الأمان — لا تcommit الأسرار، استخدم .gitignore
  • التعديل — amend لآخر commit، rebase -i لعدة commits
  • التراجع — git revert للمنشورة، git reset للمحلية

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا