تجاوز إلى المحتوى
العربية
المستوى 8: Git على طريقة Claude
الدرس 2 · +10 XP

commit واحد، فكرة واحدة

تستطيع صنع commit الآن. السؤال التالي هو كم يدخل في الواحد. إن تُرك الأمر وشأنه، فسيحزم Claude كلّ ما لمسته اليوم في commit واحد كبير. قاوِم ذلك.

الـ commit الجيّد تغيير واحد متماسك — فكرة واحدة — لا “كلّ شيء منذ الغداء.”

تخيّل الـ commits كفصول في كتاب، لا كتفريغ يوميّ في مذكّرة. إن أصلحت bug، وأعدت تسمية متغيّر من أجل الوضوح، وبدأت feature جديدة، فتلك ثلاثة فصول. اعصرها في commit واحد ولن يستطيع أحد — بمن فيهم أنت في المستقبل — أن يميّز أين ينتهي واحد ويبدأ الذي يليه.

لماذا يهمّ ذلك الحدّ فعلًا

أتذكر الـ undo من الدرس 6.8؟ إرجاع commit إلى الوراء يكون نظيفًا فقط إن كان ذلك الـ commit شيئًا واحدًا.

لنقل إن إصلاح الـ bug وإعادة التسمية غير المرتبطة به متشابكان معًا في commit واحد. وبعد أسبوع يتبيّن أن إعادة التسمية كانت خاطئة. تريد عمل undo لإعادة التسمية وحدها — لكنك لا تستطيع، ليس دون أن ترمي أيضًا إصلاح الـ bug الراكب معها في الـ commit نفسه. فكرة واحدة لكلّ commit تُبقي الـ undo لديك دقيقًا.

والأمر نفسه ينطبق على الـ history الذي قرأته في الدرس 4.6: الـ commit الذي يقول إنه يفعل شيئًا واحدًا لكنه يفعل أربعة في الخفاء هو السبب في أن بعض histories المشاريع عديمة الفائدة.

الشيء الذي يجب ألّا يدخل في commit أبدًا

بعض الأشياء لا تنتمي إلى git إطلاقًا. وأكبرها: الأسرار — ملفات .env، ومفاتيح API، وكلمات المرور، وأيّ شيء ما كنت لتلصقه في محادثة عامة.

هذا one-way door (تعرّفت عليها في الدرس 6.4). فما إن يُعمل commit لسرّ ويُشارَك حتى يبقى في الـ history إلى الأبد — حتى لو حذفته في الـ commit التالي مباشرةً، يظلّ الـ commit القديم محتفظًا به. عامِل أيّ سرّ يهبط في git على أنه مكشوف، وانتهى الأمر.

أمّا الحلّ فهو ملف اسمه .gitignore يخبر git بأيّ الملفات لا يتتبّعها أبدًا. لست مضطرًا لكتابته من ذاكرتك — اسأل Claude فحسب: “هل هنا أيّ شيء لا ينبغي أن يدخل في git؟” ودعه يُعدّ ملف .gitignore.

على طريقة Claude

أنت تضع الحدّ؛ وClaude يتولّى الـ staging:

اعمل commit لإصلاح bug تسجيل الدخول فقط — اترك إعادة التسمية لـ commit منفصل
commit just the login bug fix — leave the rename for a separate commit

يختار Claude التغييرات ذات الصلة وحدها ويعمل لها commit بمفردها. أنت قرّرت أين تنتهي فكرة واحدة؛ وClaude تولّى الميكانيكا.

ما التالي

كلّ commit يحمل ملاحظة قصيرة — رسالته. والرسالة الجيّدة تساوي أكثر مما يظنّ الناس، وClaude يكتبها أفضل مما يكلّف معظم البشر أنفسهم عناءه. كتابة الرسالة، التالي.