ما هو الـ commit حقًا
تريد أن ترى commits وbranches وعمليّات merge قبل أن تقرأ عنها؟ جرّب المعاينة التفاعلية ← — اصنع أربع commits ودمجًا واحدًا بالكتابة في متصفّحك. الحلقة كاملةً، أمام عينيك.
عودةً إلى الدرس 6.8، تعرّفت على git بوصفه undo طارئًا: git status لترى ما الذي تغيّر، وgit checkout لإرجاع ملف إلى الوراء. ولم ينجح ذلك إلا لأنه كان ثمة commit للعودة إليه. هذا المستوى يدور حول صنع تلك الـ commits عن قصد — وكامل الـ workflow المبنيّ فوقها.
الـ commit لقطة موسومة لمشروعك بأكمله في لحظة من الزمن — لقطة تستطيع العودة إليها دائمًا.
وهو ليس الشيء نفسه كحفظ ملف. هذا التمييز هو الدرس كلّه.
الحفظ يكتب فوق القديم. الـ commit يكدّس.
حين تحفظ ملفًا (Cmd-S، Ctrl-S)، يكتب حاسوبك النسخة الأحدث على القرص وينسى القديمة. النسخة السابقة تختفي ببساطة.
أمّا الـ commit فلا يكتب فوق أيّ شيء. إنه يجمّد المشروع بأكمله كما هو الآن، ويحتفظ بتلك النسخة المجمَّدة إلى الأبد، ويكدّسها فوق كلّ النسخ المجمَّدة السابقة.
إليك التشبيه الذي يجعل الفكرة تنطبع في الذهن:
- الحفظ هو الكتابة فوق صفحة بالقلم الرصاص. الكلمات الجديدة تحلّ محلّ القديمة.
- الـ commit هو تصوير الدفتر كاملًا، وتأريخ النسخة، وحفظها في ملفّ. نسخة الغد لا تمحو نسخة اليوم — تستطيع سحب أيّ نسخة من جديد، بالترتيب، إلى الأبد.
تلك الكومة من النسخ هي ذاكرة المشروع. إنها بالضبط الـ history الذي تعلّمت قراءته في الدرس 4.6 — الـ log الخاص بالـ commits، كلّ واحد منها برسالة، الذي تستطيع سؤال Claude عنه. والآن صرت أنت من يضيف إليه.
كيف تصنع واحدًا فعليًا — على طريقة Claude
لست بحاجة إلى حفظ الأوامر عن ظهر قلب (git add، ثم git commit). التحرّك هو:
- انظر إلى ما الذي تغيّر —
git status، تمامًا كما في الدرس 6.8. - أخبر Claude: “اعمل commit لهذا.”
يتولّى Claude الأعمال الفنية الخفيّة. أمّا ما هو ملكك فهو الحكم الكامن تحتها: أن تقرّر أن هذه اللحظة — هذه الحالة العاملة — تستحقّ وضع إشارة مرجعية عليها. تلك هي الجزئية التي لا يستطيع أيّ tool أن يتّخذها نيابةً عنك، وهي الخيط الذي يسري عبر هذا المستوى كلّه. الميكانيكا إلى Claude؛ والحكم إليك.
ما التالي
الآن تستطيع صنع commit. أمّا السؤال الذي لا يحذّرك منه أحد فهو: كم ينبغي أن يدخل في الـ commit الواحد؟ سيحشر Claude فترة بعد ظهرك كلّها بكلّ سرور في commit واحد إن سمحت له — وهذا خطأ في العادة. التالي.