الـ branches — صندوق رمل لتغييرك
حتى الآن، كلّ commit تجريه يتراكم على خطّ واحد من الـ history. لا بأس بذلك حين تكون وحدك في مشروع صغير. لكن في اللحظة التي قد يكسر فيها تغييرٌ ما شيئًا — أو حين يعتمد آخرون على عمل المشروع — تريد مكانًا آمنًا لتجربته أولًا. ذلك هو الـ branch.
الـ branch نسخة رخيصة قابلة للرمي من المشروع كلّه، تستطيع التجربة فيها دون أن تمسّ النسخة التي يعتمد عليها الجميع.
تخيّله مثل “Save As” قبل أن تبدأ التعديل بشراسة — لكن بصورة فورية ومجانية. النسخة الرئيسية (التي تُسمّى main) تبقى تعمل تمامًا كما كانت. وفرعك هو كونك الموازي الخاصّ بك. إن أثمرت التجربة، تعيده إلى main. وإن انحرف إلى الفوضى، تحذف الـ branch فيصير وكأنه لم يكن قطّ.
هذه هي شبكة الأمان تحت المستوى 5
أتذكر البناء والـ iterating مع Claude في الدرس 5.3؟ الـ branches هي ما يجعل ذلك آمنًا في مشروع حقيقي.
على branch، تستطيع أن تترك Claude يحاول شيئًا جريئًا — refactor كبير، أو إعادة كتابة محفوفة بالمخاطر — وأن تشغّله بقوّة. وإن تحوّل إلى فوضى، فلن تتراجع عن كلّ تغيير بحذر. بل تتخلّى عن الـ branch بأكمله. لم يرَ main أيًّا من ذلك، فلم تكن نسخة فريقك العاملة في خطر قطّ. الـ branch يمتصّ كلّ الفوضى.
ذلك هو المفتاح: الـ branches هي السبب في أن “دع Claude يجرّب الأمر فحسب” يكفّ عن كونه تهوّرًا ويصير ثلاثاءً عاديًا.
على طريقة Claude
أنت تسمّي القصد؛ وClaude ينشئ الـ branch وينقلك إليه:
اعمل branch لـ feature البحث الجديدة
make a branch for the new search feature
خلف الكواليس، ذلك هو git checkout -b ...، لكنك لست بحاجة للتفكير بهذه المصطلحات. الكلمة الوحيدة التي يستحقّ معرفتها هي main — وهي الجذع، النسخة التي تُعتبر “الحقيقية”. وكلّ ما عداها branch متفرّع منها، ينتظر إمّا أن ينضمّ إلى main أو أن يُرمى.
ما التالي
الـ branch الخاص بك وكلّ الـ commits الخاصة به ما زالت تعيش في مكان واحد بالضبط: حاسوبك. لا أحد آخر يستطيع رؤيتها — ولا حتى جهاز ثانٍ تملكه أنت. ولتغيير ذلك، تعمل push. التالي.