Cursor CLI مع Git Worktree

3 min read

Worktree يتيح لك عدة مجلدات (كل واحد على فرع مختلف) لنفس المستودع. Cursor CLI يعمل على المجلد الذي تُشغّل فيه. اجمعها وتحصل على عدة طرفيات تشغّل وكلاء CLI بالتوازي على فروع مختلفة — دون نوافذ Cursor متعددة، تعدد مهام بالكامل بلوحة المفاتيح.

لماذا الجمع بينهما؟

النهج كيف الأنسب لـ
Worktree + نوافذ Cursor متعددة فتح worktree واحد لكل نافذة مستخدمي IDE الذين يريدون شجرة الملفات والمعاينة
Worktree + CLI طرفيات متعددة، كل واحدة cd إلى worktree، تشغيل cursor agent مستخدمون يعتمدون لوحة المفاتيح أو بيئات خادم/SSH

القاسم المشترك: كل worktree مجلد مستقل → لكل واحد سياقه → تطوير متوازي دون التداخل. كأن يكون لديك عدة نسخ تعمل على فروع مختلفة في الوقت نفسه.

الاستخدام الأساسي: طرفية واحدة لكل Worktree

بافتراض أنك أنشأت worktrees بالفعل:

~/projects/
├── my-app/                  ← main
├── my-app--feature-auth/    ← feature/auth
└── my-app--feature-payment/  ← feature/payment

الطرفية 1 (تعمل على auth):

cd ~/projects/my-app--feature-auth
cursor agent "Implement JWT login"

الطرفية 2 (تعمل على payment):

cd ~/projects/my-app--feature-payment
cursor agent "Add Stripe checkout flow"

CLI يستخدم المجلد الحالي كسياقه افتراضياً، فكلا الطرفيتين يعدّلان فقط worktree الخاص به. هذا "وكيلا CLI يعملان بالتوازي" — لا حاجة لفتح نافذتي Cursor، توفير موارد وتجنّب تبديل السياق.

دون تغيير المجلد: استخدم --path لاستهداف Worktree

أنت في مجلد المشروع الرئيسي لكن تريد أن يعمل CLI على worktree معيّن:

cd ~/projects/my-app
cursor agent "Add unit tests for feature/auth" --path ../my-app--feature-auth

--path يحدد له أي مجلد ينظر — مسار الـ worktree. مفيد عند التعامل مع worktree واحد في المرة، أو عندما يكون المسار ثابتاً في سكربت.

غير تفاعلي + Worktree (سكربتات / عمليات دفعة)

تشغيل نفس نوع المهمة على عدة worktrees بالتسلسل (مثلاً إضافة README للكل، إصلاح lint في الكل):

# مثال: تشغيل "fix lint" على كلا worktree
cursor agent "Fix all auto-fixable errors per .eslintrc" --path ../my-app--feature-auth --no-interactive
cursor agent "Fix all auto-fixable errors per .eslintrc" --path ../my-app--feature-payment --no-interactive

أو اكتب حلقة (عدّل المسارات حسب إعدادك):

for dir in ../my-app--feature-auth ../my-app--feature-payment; do
  cursor agent "Fix linter errors" --path "$dir" --no-interactive
done

تعليمة واحدة، تنظيف عدة فروع دفعة واحدة — ممتاز للمرور النهائي قبل رفع PR.

العلاقة مع "Worktree + نوافذ متعددة"

  • نوافذ متعددة: كل نافذة Cursor تفتح worktree، باستخدام Agent والـ Chat والإكمال Tab في الـ IDE.
  • CLI + Worktree: طرفية + cursor agent — نفس فكرة "مجلد واحد، سياق واحد"، فقط افتح طرفيات أكثر للتوزيع المتوازي.

يمكنك أيضاً المزج: التطوير الرئيسي في النافذة، واستخدام CLI على الخادم لإصلاحات صغيرة على فرع آخر.

ملخص

  • Worktree = مجلدات متعددة، فروع متعددة؛ CLI = يعمل على المجلد الحالي أو --path → ثنائي طبيعي.
  • متوازي: افتح طرفيات متعددة، كل واحدة cd إلى worktree مختلف، ثم شغّل cursor agent.
  • طرفية واحدة: استخدم --path <worktree-path> لاستهداف الـ worktree المطلوب.
  • سكربتات/دفعة: --path + --no-interactive لتشغيل نفس المهمة على عدة worktrees.

التالي: 07-unlimit-loop-debug — دع CLI يحلّق تلقائياً ويصلح الكود حتى تمر الاختبارات (يمكنك أن تذهب لتشرب قهوة).