Deepseek ArtifactsDeepseek Artifacts
دليل worktrees

أشجار العمل في Claude Code (worktrees): جلسات متوازية بلا تعارضات

أمر واحد يمنح كل جلسة Claude Code نسخة كاملة من مستودعك. تعلّم claude --worktree وبنية .claude/worktrees وعزل الوكلاء الفرعيين في worktrees والتنظيف عند الخروج — وأين يظل git worktree add اليدوي متفوقًا.

TL;DR

  • يبدأ الأمر claude --worktree (الصيغة القصيرة -w) جلستك داخل نسخة جديدة من المستودع في .claude/worktrees/<name>، مسحوبة على فرع اسمه worktree-<name>.
  • أطلق جلسات إضافية في طرفيات أخرى للعمل بالتوازي — كل جلسة تعدّل مجلدها الخاص مع مشاركة تاريخ Git نفسه والremote نفسه.
  • الوكلاء الفرعيون ينالون worktrees أيضًا: اطلب ذلك بلغة طبيعية، أو اجعل isolation: worktree في frontmatter ملف .claude/agents/*.md لجعلها دائمة.
  • عند الخروج، تُحذف worktrees غير المسماة النظيفة تلقائيًا ويُسأل العمل الجاري عن إبقائه أو حذفه؛ وادمج النتائج بـgit merge عادي للفرع worktree-<name>.

Claude Code Worktrees in 7 Minutes

القناة: Developers Digest7:10

مشاهدة

I'm using claude --worktree for everything now

القناة: Matt Pocock7:57

مشاهدة

Worktrees — official documentation

الوثائق الرسمية: code.claude.com/docs

مشاهدة

كل خيار وكل مسار وكل سلوك تنظيف في هذه الصفحة مدقّق مقابل وثائق worktrees الرسمية؛ والفيديوهات أعلاه هي المصدر البصري والمعرفي، بما في ذلك سؤال الإبقاء/الحذف عند الخروج وفخ الدفع إلى main.

تُنسب لقطات الشاشة إلى صانعيها بروابط مباشرة إلى الطوابع الزمنية الدقيقة. لا تُستخدم لقطات للوجوه.

استخدام worktrees في Claude Code خطوة بخطوة

الجزء 1 — جلستك المعزولة الأولى

  1. 1

    تحضير مستودع Git فيه commit واحد على الأقل

    أشجار العمل تتفرع من تاريخ قائم، لذا تحتاج ميزة worktree إلى مستودع Git حقيقي. في مجلد جديد شغّل git init وأنشئ ملفًا (العرض التوضيحي يشغّل touch index.html فحسب) واعمل commit. تخطَّ ذلك وليس لدى Claude Code ما يتفرع منه.

    Terminal running git init in a demo-app folder with Initialized empty Git repository output and touch index.html, the one-commit starting point Claude Code worktrees require
    ‏git init مع touch index.html — commit واحد هو كل ما تحتاجه ميزة worktree قبل أن يعمل claude --worktree.شاهد عند 1:06
  2. 2

    اعرف ما هو الـworktree فعلًا

    ‏git worktree هو مجلد عمل ثانٍ بملفاته وفرعه المسحوب الخاصين، يشارك تاريخ المستودع وremote الخاص به. وعلى خلاف تبديل الفروع، لا شيء يُخزَّن جانبًا: السحب الرئيسي وكل worktree قابلان للاستخدام في آن واحد — وهذا بالضبط ما يحتاجه الوكلاء المتوازون.

    Worktrees diagram showing one Git repository fanning out into three folders labeled ../main, ../feature1 and ../feature2, each checked out on its own branch
    مستودع واحد ومجلدات عمل كثيرة: ‏../main و../feature1 و../feature2 كل منها على فرعه في الوقت نفسه.شاهد عند 0:30
  3. 3

    أطلق Claude Code مع --worktree

    من داخل المستودع شغّل claude --worktree (أو الصيغة القصيرة claude -w). ينشئ Claude Code المجلد .claude/worktrees/<name> ويولّد اسمًا مثل bright-tumbling-rabbit إذا لم تمرر واحدًا، ويدخل الجلسة في تلك النسخة مباشرة. في تطبيق سطح المكتب تختار خيار worktree عند بدء الجلسة بدلًا من ذلك.

    Claude Code v2.1.50 welcome banner after launching claude --worktree in the demo-app repo, with the session working directory set to .claude/worktrees/bright-tumbling-rabbit
    لافتة الترحيب تُظهر أن مجلد عمل الجلسة داخل .claude/worktrees بالفعل — كل ما يأتي يجري في النسخة.شاهد عند 1:22
  4. 4

    افتح جلسة ثانية لمهمتك الثانية

    شغّل claude --worktree مجددًا في طرفية أخرى. بلا اسم ستحصل على worktree مستقل آخر؛ ومرر الاسم نفسه مرتين لإعادة فتح الاسم نفسه. يمكن الآن لوكيلين تعديل المشروع ذاته في آن واحد لأن كلًّا منهما يرى مجلده وحده.

الجزء 2 — أين تسكن ملفاتك وأوامرك

  1. 5

    افحص النسخة الكاملة تحت .claude/worktrees

    افتح المجلد في مدير ملفاتك: كل worktree نسخة سحب كاملة بملف index.html خاص وبملف .claude/settings.local.json خاص وملف git خاص، بينما تبقى قاعدة الكائنات الثقيلة مشتركة في .git الرئيسي. لهذا فإن إنشاء نسخة إضافية يكاد يكون مجانيًا.

    macOS Finder window listing .claude/worktrees with clever-munching-toast and spicy-napping-otter copies behind two browser tabs, each worktree holding its own git folder and index.html
    ‏worktrees على القرص — clever-munching-toast وspicy-napping-otter — كلٌّ نسخة مشروع كاملة بمجلد git وindex.html خاصين.شاهد عند 1:50
  2. 6

    تأكد أن الأوامر تبقى داخل الـworktree

    عندما تفتح الجلسة الأولى صفحتها في المتصفح، يُظهر تنبيه الأذونات أن المسار يشير إلى .claude/worktrees/clever-munching-toast — لا إلى سحبك الرئيسي. كما يمنع Claude Code الوكلاء الفرعيين من تعديل السحب الرئيسي مباشرة، وإحدى فحوص العزل هذه لا يمكن إطفاؤها.

    Claude Code permission prompt for an open command targeting .claude/worktrees/clever-munching-toast/index.html, showing the session working only inside its own worktree copy
    حوار الموافقة يذكر مسار الـworktree بالضبط، دليلًا على أن الجلسة الأولى لا تلمس سوى نسختها الخاصة من المشروع.شاهد عند 1:42
  3. 7

    سمِّ الـworktrees أو تفرّع من PR‏ (اختياري)

    ينشئ الأمر claude --worktree feature-auth عنصر worktree باسم متوقَّع، وإعادة الاسم نفسه تعيد فتحه بدل إنشاء مكرر. يمكنك أيضًا تمرير رقم PR بين علامتي تنصيص (‏claude --worktree "#1234") أو رابط PR على GitHub/GitLab للحصول على worktree لطلب السحب ذاك تحت .claude/worktrees/pr-<number>.

الجزء 3 — وكلاء فرعيون متوازيون والتنظيف

  1. 8

    اطلب وكلاء فرعيين متوازيين بعزل worktree

    العزل يتجاوز الطرفيات. مطالبة واحدة — "أطلق خمسة وكلاء فرعيين مختلفين لإنشاء خمس نسخ، واستفد من عزل git worktree" — تجعل Claude Code يطلق وكلاء Task، كلٌّ في worktree معزول خاص، يعملون على المستودع نفسه في آن واحد بلا تصادمات.

    Claude Code spawning five Task agents in parallel after a single prompt requesting creative SaaS landing page variations with git worktree isolation
    خمسة وكلاء Task يُطلقون بالتوازي، كلٌّ معلَن بأنه يعمل في git worktree معزول خاص.شاهد عند 2:42
  2. 9

    راقب كل وكيل وهو يجري في مساره الخاص

    تعرض قائمة المهام النسخ الخمس مع استخدامات الأدوات وعدادات التوكنات، فترى التقدم دون فتح خمس طرفيات. وتبقى نصوص الوكلاء الفرعيين خارج سياق الخيط الرئيسي، ما يُبقي جلسة التنسيق صغيرة بينما يتحمل الوكلاء العمل الثقيل.

    Claude Code task list with all five SaaS landing page subagents mid-run, each labeled with tool uses and token counts while isolated in its own worktree
    الوكلاء الفرعيون الخمسة في منتصف التشغيل — النسخة 1 انتهت بالفعل عند 50.3 ألف توكن بينما يقرأ الآخرون ملفات في worktrees الخاصة بهم.شاهد عند 3:42
  3. 10

    قارن النسخ ثم ادمج الفائزة

    عند انتهاء الوكلاء، يسرد Claude Code كل نسخة مع مسارها تحت .claude/worktrees/agent-<id>/، فتفتحها جنبًا إلى جنب في المتصفح. انشر ما يعجبك بـgit merge عادي لفرع الـworktree (أو عبر PR) — والتعارضات إن وُجدت تُحل كأي دمج Git آخر.

    Claude Code summary listing five landing page variations with their .claude/worktrees/agent-prefixed index.html paths next to a rendered dark FlowSync preview
    يلخّص كل نسخة ومسارها في .claude/worktrees، مع نتيجة معروضة مفتوحة بجوار القائمة.شاهد عند 4:22
  4. 11

    احفظ العزل كوكيل فرعي قابل لإعادة الاستخدام

    لجعل عزل worktree دائمًا، اطلب ذلك فحسب: "أنشئ وكيلًا فرعيًا لمطوّر واجهات أمامية، واستخدم نموذج Haiku، واجعله يستفيد من عزل worktree". يبحث Claude Code في وثائق وكلائه الخاصة ويكتب لك ملفًا جديدًا تحت .claude/agents/.

    Claude Code accepting a natural-language request to create a front-end developer subagent with Haiku that leverages work tree isolation
    اللغة الطبيعية كافية — يفحص Claude Code وثائقه الخاصة لصيغة الوكلاء المخصصة قبل كتابة الملف.شاهد عند 5:42
  5. 12

    افحص سطر isolation: worktree في الـfrontmatter

    يحمل الملف frontend-dev.md المولَّد name وdescription وmodel: haiku وقائمة أدوات مسموحة و— السطر الجديد — isolation: worktree. كل تشغيل لاحق لهذا الوكيل الفرعي يجري الآن في worktree مؤقت يُحذف تلقائيًا إذا انتهى دون تغييرات.

    Claude Code writing the .claude/agents/frontend-dev.md subagent file with isolation: worktree in its YAML frontmatter so every future run gets its own worktree
    السطر 8 من الـfrontmatter — ‏isolation: worktree — هو ما يمنح كل تشغيل لهذا الوكيل الفرعي worktree الخاص به.شاهد عند 6:42
  6. 13

    ادمج ثم اترك Claude ينسّق

    عند إنهائك جلسة، يفحص Claude Code الـworktree: تُحذف تلقائيًا worktrees غير المسماة النظيفة، وكل ما فيه عمل يطلب الإبقاء أو الحذف — والإبقاء يطبع الأمر claude --worktree <name> --resume لوقت لاحق. وتشغيلات -p بلا واجهة لا تنظف أبدًا؛ احذفها بـgit worktree remove.

‏worktrees في Claude Code مقابل git worktree add اليدوي

أشجار العمل جزء من Git منذ سنوات — الجديد أن Claude Code يدير دورة حياتها كاملة. الاختلافات ذات الأثر:

  • 1الإنشاء: يدويًا تشغّل git worktree add ../project-feature -b feature ثم cd إليه ثم تشغّل Claude. مع claude --worktree تدخل الجلسة إلى .claude/worktrees/<name> في خطوة واحدة، بالاسم منك أو تلقائيًا.
  • 2‏Commit الأساس: يتحكم worktree.baseRef في نقطة البداية — ‏fresh (الافتراضي) يتفرع من الفرع الافتراضي للremote، وhead يحمل commits المحلية غير المدفوعة. لا يمكن للخيار استهداف فرع بعينه؛ الوثائق توصي بـgit worktree add اليدوي لذلك.
  • 3ملفات التهيئة: ملف .worktreeinclude في جذر المشروع ينسخ الملفات المتجاهَلة في git مثل .env إلى كل worktree جديد. الـworktrees اليدوية لا تنال هذا العلاج.
  • 4التنظيف: يفحص Claude Code الـworktree عند الخروج، ويحذف تلقائيًا غير المسماة النظيفة، ويسأل قبل لمس العمل الجاري، ويكنس دوريًا worktrees الوكلاء الفرعيين المهملة. اليدوية مسؤوليتك بالكامل.
  • 5حواجز الحماية: فحوص العزل تمنع الوكلاء الفرعيين من تعديل السحب الرئيسي، واستئناف الجلسة يعيدك إلى worktree الخاص بها. لا نظير لذلك في git worktree add العادي.

في العمق، لا يزال Git عاديًا. لوحة التحكم بالمصادر في VS Code تسرد كل worktree مع تغييراته، والدمجات git merge عادية، وتتعايش اليدوية وتلقائية Claude في المستودع نفسه — اختر الأداة حسب المهمة.

حين لا يتصرّف الـworktree كما يجب

معظم العثرات أساسيات Git تتجلى، لا أخطاء في الميزة. هذه الخمس تغطي تقريبًا كل حافة خشنة ستقابلها:

  • 1الدفع يهبط على main. فرع worktree الجديد يتتبع الفرع الافتراضي للorigin، لذا قد يستهدف git push المجرّد فرع main. ادفع صراحةً بـgit push origin worktree-<name> وأبقِ main محمية.
  • 2ملفات أو أدوات مفقودة. الملفات المتجاهَلة في git (.env ومجلدات vendor) ومرشحات المستودع المحلية مثل LFS لا تنتقل إلى worktree جديد. أدرجها في .worktreeinclude، أو شغّل git lfs pull وأوامر الإعداد داخل الـworktree.
  • 3يفشل الإطلاق بخطأ ثقة. في مجلد غير موثوق يخرج claude --worktree بخطأ يطلب قبول مساحة العمل أولًا — وافق وأعد التشغيل. (تشغيلات -p غير التفاعلية تتخطى الفحص.)
  • 4‏worktrees تتصادمان وقت الدمج. إذا عدّلت المهمتان الملف نفسه — مسارات، شريط جانبي، package.json — فستحل التعارضات عند الدمج كأي سير Git. أشجار العمل تزيل التصادمات أثناء التشغيل لا تزاحم النوايا.
  • 5‏worktrees متبقية بعد التشغيلات بلا واجهة. تشغيلات -p لا تنظف أبدًا خلفها؛ احذفها يدويًا بـgit worktree remove (شغّل أولًا git worktree unlock إن كان أحدها مقفولًا).

حذف worktree من تحت جلسة ليس قاتلًا أيضًا: الاستئناف التالي يعود إلى مجلد الإطلاق وتُمحى الرابطة. لا شيء آخر في الجلسة ينكسر.

FAQ

أدلة Claude Code ذات الصلة