# Git worktree في Claude Code: جلسات متوازية

> كيفية استخدام --worktree و.worktreeinclude وworktree.baseRef وعزل الوكلاء الفرعيين. الفروق عن الفروع، وتنظيف worktrees، والأخطاء الشائعة.

Source: https://ailoot.ai/blog/ar/claude-code-git-worktree/
Canonical: https://ailoot.ai/blog/ar/claude-code-git-worktree/
Language: ar
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-045
Revision: sha256-36b06f66c9c3182b88e766f0499f68415422b783772dd549a8d0fc3451d75d87




[تجد في الوثائق معلومات عملية حول العمل باستخدام Ailoot](https://ailoot.ai/docs/).

## ما هو git worktree في Claude Code

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

Git worktree هو دليل عمل منفصل لفرع آخر من المستودع نفسه. ينشئ الأمر `claude --worktree <name>` تلقائيًا worktree في `.claude/worktrees/<name>/` ويبدأ Claude Code داخله. طرفيتان ← جلستان ← ملفات مختلفة على القرص، بلا أي تداخل. الميزة متاحة مباشرة في Claude Code <bdi>v2.0+</bdi>، ويمكن ضبطها عبر `.worktreeinclude` للأسرار و`worktree.baseRef` لاختيار الفرع الأساسي.

</div>

تشغيل عدة وكلاء بالتوازي في المجلد نفسه هو المشكلة الأساسية في vibe coding بسرعة عام 2026. تكتب وكلاء الذكاء الاصطناعي الشيفرة أسرع مما يستطيع الشخص متابعة من يعمل على ماذا. ومن دون عزل الملفات، ينتهي تشغيل جلستين متوازيتين من Claude Code في دليل واحد بأن تكتب إحداهما فوق عمل الأخرى.

يحل Git worktree هذه المشكلة على مستوى نظام الملفات. لديك دليل رئيسي واحد تعمل فيه. ينشئ الأمر `claude --worktree feature-auth` المجلد `.claude/worktrees/feature-auth/` على فرع منفصل ويبدأ Claude Code داخله. الملفات معزولة. ولا تظهر تغييرات إحدى الجلستين للأخرى حتى تدمجها صراحةً.

تشرح وثائق Anthropic الرسمية الأمر على النحو الآتي:

<figure>
<blockquote>
<p>تشغيل كل جلسة Claude Code في worktree خاص بها يعني أن التعديلات في جلسة لا تؤثر أبدًا في ملفات جلسة أخرى. يمكنك بناء ميزة في طرفية وإصلاح خطأ في طرفية أخرى.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

إشارة تساعدك على التحقق بنفسك: إذا سبق أن حصلت على commit كان نصف ملفاته من عمل شخص آخر، فأنت بحاجة إلى worktree.

## كيف يختلف git worktree عن الفرع العادي

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

يبدّل `git checkout` العادي نسخة العمل في المجلد نفسه؛ فتختفي الملفات القديمة من القرص إلى أن تعود إلى الفرع. ينشئ `git worktree add` **مجلدًا ثانيًا** لفرع آخر بجوار الأول. يوجد الفرعان على القرص في الوقت نفسه، ويمكنك التنقل بينهما بأمر `cd` بسيط. في الخلفية يوجد مستودع `.git` واحد، بسجل مشترك ومستودع بعيد مشترك. إنها عدة نسخ عمل فقط.

</div>

في تدفق Git المعتاد، تكون على فرع `main` ثم تشغّل `git checkout feature-x`، فيكتب Git فوق ملفات نسخة العمل. ويتعطل `npm run dev` قيد التشغيل لأن `package.json` تغيّر من تحته. تحفظ تغييراتك غير الملتزم بها مؤقتًا باستخدام stash وتنتظر حتى يعيد IDE فهرسة الملفات. ثم تعود، فيُكتب فوق كل شيء مجددًا، فتضطر إلى stash وpop مرة أخرى.

يمنحك Git worktree خيارًا آخر: بدل تبديل **مجلد واحد** بين الفروع، تنشئ **مجلدًا ثانيًا** لفرع آخر. ينشئ الأمر `git worktree add ../project-feature-x feature-x` الدليل `../project-feature-x/` وفيه ملفات الفرع `feature-x`. يبقى `main` في المجلد الأصلي ويواصل خادم التطوير عمله.

| المعيار | فرع `git checkout` | `git worktree add` |
|----|----|----|
| ملفات نسخة العمل | يُكتب فوقها | تظهر في مجلد جديد |
| العمل بالتوازي على فرعين | لا | نعم |
| التغييرات غير الملتزم بها | تحتاج إلى `git stash` | لا حاجة لأي إجراء |
| سرعة التبديل | تعتمد على حجم الفرق | يكفي `cd` |
| مساحة القرص | 1× | N× (نسخة من الملفات لكل فرع) |

في السابق، كان يجب إعداد وضع worktree في Claude Code يدويًا: `git worktree add`، ثم `cd`، ثم `claude`، وتكرار ذلك في كل طرفية. ينفّذ الخيار `--worktree` (أو `-w`) الخطوات الثلاث كلها بأمر واحد.

## تشغيل أول جلسة متوازية: الخيار `--worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

ينشئ الأمر `claude --worktree feature-auth` worktree في `.claude/worktrees/feature-auth/`، وينشئ الفرع `worktree-feature-auth` انطلاقًا من `origin/HEAD`، ثم يبدأ Claude Code هناك مباشرةً. لا حاجة إلى تنفيذ `git worktree add` أو `cd` يدويًا. كرر الأمر في الطرفية المجاورة باسم مختلف لتحصل على جلستين مستقلتين. وإذا حذفت الاسم (`claude --worktree`)، فسيُنشئ Claude اسمًا عشوائيًا مثل `bright-running-fox`.

</div>

مثال بسيط. افتح الطرفية الأولى عند جذر المشروع:

```bash
claude --worktree feature-auth
```

ينفّذ Claude Code ثلاثة أمور:

1. ينشئ `.claude/worktrees/feature-auth/` بلقطة من `origin/HEAD` (وهو عادةً فرعك الافتراضي).
2. ينشئ فرعًا جديدًا باسم `worktree-feature-auth`.
3. يبدأ الجلسة في هذا المجلد.

افتح طرفية ثانية في مجلد جذر المستودع نفسه:

```bash
claude --worktree bugfix-123
```

هذا كل شيء. جلستا Claude Code، وملفات مختلفة على القرص، وفرعا Git مختلفان. إذا كتبت الشيفرة الخاصة بالمصادقة في الأولى وأصلحت اختبارًا فاشلًا في الثانية، فلن تتمكنا ماديًا من إعاقة إحداهما الأخرى.

إذا لم ترغب في كتابة اسم، فسيختار Claude اسمًا:

```bash
claude --worktree
# → ينشئ شيئًا مثل .claude/worktrees/bright-running-fox/
```

نصيحة للمبتدئين في Git: أضف `.claude/worktrees/` إلى `.gitignore`. وإلا، فعند تشغيل `git status` في المجلد الرئيسي سترى محتويات جميع worktrees كملفات غير متعقبة:

```
# .gitignore
.claude/worktrees/
```

خطأ ينبغي تجنبه: قبل أول تشغيل لـ`--worktree` في دليل جديد، ادخله بتشغيل `claude` عاديًا (من دون الخيار) ووافق على مربع حوار الوثوق بمساحة العمل. وإلا سيفشل الخيار مع خطأ “trust not accepted”، حتى عند دمجه مع `-p` للوضع عديم الواجهة.

## أين توجد worktrees وكيفية العثور عليها

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

توجد جميع worktrees افتراضيًا في `.claude/worktrees/<name>/` بجوار جذر المستودع. لعرض القائمة، شغّل `git worktree list`. للدخول إلى worktree يدويًا، استخدم `cd .claude/worktrees/feature-auth`. وللتبديل داخل جلسة Claude، اطلب منه «الانتقال إلى worktree آخر»؛ إذ سيستخدم أداة EnterWorktree المدمجة. ويبقى worktree القديم كما هو على القرص.

</div>

الموقع الافتراضي ثابت: `.claude/worktrees/<value>/` عند جذر المستودع. إذا كان مشروعك في `~/dev/my-app/`، فسيكون worktree المسمى `feature-auth` في `~/dev/my-app/.claude/worktrees/feature-auth/`.

للتخطيطات غير المعتادة (مثل وضع worktree خارج المستودع)، يوجد الخطاف `WorktreeCreate`، وسنتحدث عنه لاحقًا في قسم SVN وMercurial.

يمكنك التبديل إلى worktree موجود آخر ضمن جلسة Claude واحدة. قل في المحادثة: «انتقل إلى `.claude/worktrees/bugfix-123`»، وسيستدعي Claude أداة `EnterWorktree`. سيبقى المجلد الحالي دون تغيير، ويمكنك الرجوع بالطريقة نفسها.

يعرض أمر Git القياسي قائمة بجميع worktrees، بما فيها الرئيسية وتلك التي أُنشئت يدويًا:

```bash
git worktree list
```

سيبدو الناتج على النحو الآتي:

```
/home/user/dev/my-app                  abc1234 [main]
/home/user/dev/my-app/.claude/worktrees/feature-auth  def5678 [worktree-feature-auth]
/home/user/dev/my-app/.claude/worktrees/bugfix-123    9876fed [worktree-bugfix-123]
```

## نسخ `.env` والأسرار: ملف `.worktreeinclude`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

worktree هو عملية checkout جديدة. لا توجد في المجلد الجديد الملفات الموجودة في `.gitignore` مثل `.env` و`.env.local` والإعدادات المحلية. ومن دونها لن يعمل `npm run dev` أو `prisma db push`. يستخدم ملف `.worktreeinclude` في جذر المشروع صياغة `.gitignore` ليخبر Claude Code بالملفات التي ينبغي نسخها تلقائيًا إلى كل worktree جديد. ويُطبّق مع `--worktree` وworktrees الوكلاء الفرعيين وجلسات تطبيق سطح المكتب.

</div>

عندما ينشئ `--worktree` مجلدًا جديدًا، لا يحصل إلا على ما أُودع في Git. يوجد `.env` الذي يحتوي مفاتيح API و`.env.local` الذي يتضمن الإعدادات المحلية في `.gitignore`، ولذلك لا يظهران في worktree. ويفشل أول تشغيل لـ`npm run dev` برسالة “MISSING DATABASE_URL”.

الحل اليدوي هو نسخ `.env` بعد كل تشغيل لـ`--worktree`. ينجح ذلك مرة، ثم يُنسى. أما حل Anthropic فهو ملف `.worktreeinclude` في جذر المشروع يسرد الملفات التي يتجاهلها Git وينبغي نسخها تلقائيًا إلى كل worktree جديد.

أنشئ ملف `.worktreeinclude` في جذر المستودع:

```
.env
.env.local
config/secrets.json
```

الصياغة مطابقة لـ`.gitignore`. ويمكنك استخدام أنماط glob:

```
.env*
*.local
config/*.json
.vscode/settings.json
```

تقدم Anthropic قاعدة واضحة لتجنّب الحوادث:

<figure>
<blockquote>
<p>يستخدم الملف صياغة gitignore. لا تُنسخ إلا الملفات التي تطابق النمط وتكون أيضًا مستثناة من التتبع في Git. ولا تُكرّر الملفات التي يتتبعها Git مطلقًا.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

بعبارة أخرى، لا يمكنك نسخ `package.json` عن طريق الخطأ عبر `.worktreeinclude`؛ فهو ليس مدرجًا في `.gitignore`. ومن الآمن وضع أي أنماط في الملف.

يعمل ملف `.worktreeinclude` نفسه في ثلاثة أوضاع: `--worktree` اليدوي، وworktrees الوكلاء الفرعيين التلقائية (انظر أدناه)، والجلسات من تطبيق Claude لسطح المكتب.

## إنشاء worktree من طلب سحب لمراجعة الشيفرة

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

يجلب الأمر `claude --worktree "#1234"` طلب السحب \#1234 من origin وينشئ worktree في `.claude/worktrees/pr-1234/` يتضمن فرع PR. ويمكنك تمرير عنوان URL كامل: `claude --worktree https://github.com/OWNER/REPO/pull/1234`. هذا مفيد لمراجعة الشيفرة: افتح PR في مجلده الخاص، وسيتمكن Claude من تشغيل الاختبارات وقراءة السجلات وكتابة تعليق، فيما يبقى المستودع الرئيسي دون تغيير.

</div>

سيناريو مراجعة شائع: أرسل إليك زميل PR، وتحتاج إلى فحص الشيفرة وتشغيل الاختبارات وترك تعليق. باستخدام `git checkout pull/1234/head` العادي، ستبدّل نسخة العمل مجددًا وتعطّل جلستك النشطة.

باستخدام الخيار `--worktree`، يكفي أمر واحد:

```bash
claude --worktree "#1234"
```

ما يحدث هو أن Claude Code يشغّل `git fetch origin pull/1234/head`، وينشئ worktree في `.claude/worktrees/pr-1234/`، ثم ينتقل إلى فرع PR. وتبدأ الجلسة. يمكنك أن تطلب منه فورًا «قراءة diff وتشغيل الاختبارات والعثور على الأخطاء المنطقية»؛ وفي أثناء عمل Claude، تواصل جلستك الرئيسية على `main` عملها.

والصياغة البديلة هي عنوان URL الكامل لطلب السحب:

```bash
claude --worktree https://github.com/OWNER/REPO/pull/1234
```

في مشروع حقيقي، يؤدي الجمع بين `claude --worktree "#N"` ووكيل فرعي خاص بمراجعة الشيفرة إلى مراجعة تلقائية خلال دقيقة أو دقيقتين. شغّله في الخلفية، وواصل عملك في النافذة الرئيسية، ثم ارجع إلى النتيجة عبر `claude agents`.

## الفرع الأساسي: `worktree.baseRef` مع `fresh` أو `head`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

ينشئ worktree فرعًا من `origin/HEAD` افتراضيًا، أي من أحدث commit تمت مزامنته من المستودع البعيد. هذه بداية آمنة و«نظيفة». إذا أردت تضمين commits محلية لم تُدفع بعد، فاضبط `worktree.baseRef: "head"` في الإعدادات. يشير HEAD إلى commit؛ وتبقى تعديلات الملفات المتتبعة غير المثبتة في النسخة الأصلية وتحتاج إلى نقل صريح مستقل. هذا مفيد عندما يحتاج وكيل فرعي إلى العمل استنادًا إلى ميزتك الحالية من دون التبديل إلى main. لا يقبل الإعداد إلا `fresh` أو `head`؛ ولا يدعم مراجع عشوائية.

</div>

الإعداد الافتراضي هو أن يبدأ كل worktree جديد من `origin/HEAD`. ميزته أنه يوفر بداية نظيفة مضمونة التطابق مع ما ستراه CI. أما عيبه فهو أن التغييرات غير الملتزم بها أو عدة commits محلية تتجاوز المستودع البعيد على فرعك الحالي لن تُضمّن في worktree الجديد.

لبدء worktree من commit ‏HEAD المحلي الحالي، أضف ما يلي إلى `.claude/settings.json` (أو إلى الإعدادات العامة):

```json
{
  "worktree": {
    "baseRef": "head"
  }
}
```

يبدأ الآن `claude --worktree experimental-feature` من `HEAD` المحلي الحالي. يفيد ذلك عندما تملك الميزة commits محلية لم تُدفع بعد. لا يشمل تعديلات الملفات المتتبعة التي لم تُثبت. إذا احتاجها الوكيل الفرعي، فاحفظ التغييرات المطلوبة وانقلها صراحة ثم افحص الفروق في الوجهة؛ ولا تخلط هذا النقل بـ `.worktreeinclude` الذي يعالج الملفات المحلية المتجاهلة.

يقبل الإعداد قيمتين بالضبط: `"fresh"` (= `origin/HEAD`) و`"head"` (= HEAD المحلي). لا تُقبل مراجع عشوائية مثل `"feature-branch"` أو hash لالتزام؛ وهذا قيد مقصود لمنع الانفجار التوافقي للخيارات.

## عزل الوكلاء الفرعيين تلقائيًا: `isolation: worktree`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

الوكيل الفرعي في Claude Code وكيل متخصص ينفّذ مهمة واحدة، مثل مراجعة الشيفرة أو إعادة هيكلتها أو البحث. إذا أطلقت عدة وكلاء فرعيين بالتوازي من جلسة واحدة، فسيعملون افتراضيًا في المجلد نفسه وقد يكتب بعضهم فوق ملفات بعض. أضف `isolation: worktree` إلى frontmatter الخاص بالوكيل الفرعي لمنح كل وكيل worktree مؤقتًا، يُزال بسلاسة عند الانتهاء إذا لم ينفّذ أي commit.

</div>

عندما تقول لـClaude: «أطلق ثلاثة وكلاء فرعيين: يقرأ أحدهم قاعدة البيانات، ويفحص الثاني API، ويتحقق الثالث من الاختبارات»، فسيعمل الثلاثة افتراضيًا في نسخة العمل نفسها. وإذا كتب اثنان منهم في الملف نفسه في الوقت ذاته، فسيحدث تعارض. والحل هو منح كل واحد منهم worktree خاصًا به تلقائيًا.

الطريقة 1: اطلب ذلك شفهيًا. اكتب إلى Claude في المحادثة:

```
استخدم worktrees لوكلائك.
```

سيطبّق Claude العزل على كل الوكلاء الفرعيين اللاحقين في هذه الجلسة.

الطريقة 2: اضبطه صراحةً في الوكيل الفرعي نفسه. أضف حقلًا إلى frontmatter في ملف الوكيل الفرعي (مثل `.claude/agents/code-reviewer.md`):

```yaml
---
name: code-reviewer
description: يقرأ diff ويكتب تعليقات مراجعة الشيفرة
isolation: worktree
---

أنت مراجع دقيق. اقرأ diff وابحث عن أخطاء منطقية...
```

سيحصل كل تشغيل لهذا الوكيل الفرعي الآن على worktree مؤقت في `.claude/worktrees/`. إذا لم يكتب الوكيل الفرعي أي شيء، فسيُحذف المجلد تلقائيًا عند انتهائه. وإذا كانت هناك تغييرات غير ملتزم بها، فسيسأل Claude إن كنت تريد الاحتفاظ بها أو إزالتها.

الفرع الأساسي لـworktrees الوكلاء الفرعيين هو نفسه المستخدم مع `--worktree`: `origin/HEAD` افتراضيًا، أو `HEAD` المحلي عند ضبط `worktree.baseRef: head`.

## مصفوفة اتخاذ القرار: worktree أم `/bg` أم وكيل فرعي أم Agent View

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

هناك أربع آليات في Claude Code كثيرًا ما يقع الخلط بينها. يوفّر worktree **عزل الملفات** (على القرص). ويوفّر `/bg` **جلسة في الخلفية** (السياق والرموز). والوكيل الفرعي **وكيل متخصص لمهمة واحدة** (الموجّه والأدوات). أما Agent View فهو **لوحة تعرض كل الجلسات** (واجهة المستخدم). ويمكن الجمع بينها: ينشئ `/bg` worktree تلقائيًا، ويبدأ وكيل فرعي مع `isolation: worktree` في worktree مؤقت، ويعرض Agent View الثلاثة جميعًا في قائمة واحدة.

</div>

| الأداة | ما الذي تعزله | متى تستخدمها |
|----|----|----|
| `claude --worktree <name>` | الملفات (مجلد وفرع منفصلان) | تريد إبقاء N جلسات تعمل يدويًا بالتوازي في طرفيات مختلفة |
| `/bg` (أو `Ctrl+B`) | السياق والوقت | مهمة طويلة لا تريد أن تحجب النافذة الحالية. يُنشأ worktree في الخلفية |
| وكيل فرعي مع `isolation: worktree` | الملفات ضمن جلسة واحدة | يوزع موجّه واحد العمل على N وكلاء وتحتاج إلى منعهم من الكتابة فوق ملفات بعضهم |
| `claude agents` (Agent View) | لا شيء؛ إنها واجهة مستخدم | تريد رؤية الجلسات قيد التشغيل أو المتوقفة مؤقتًا أو المكتملة في لوحة واحدة |
| `/goal` | إدارة الاستقلالية | تريد أن يعمل Claude حتى يتحقق شرط ما من دون مطالبات منك بين الأدوار |

تركيبات شائعة:

- **«ميزتان بالتوازي، يدويًا»** — طرفيتان، وفي كل واحدة `claude --worktree`. الحالة الأبسط.
- **«ابدأ إعادة هيكلة ليلية؛ سأغلق التطبيق»** — `/bg` + `/goal` مع شرط اكتمال. تعمل الجلسة باستقلال عن نافذتك.
- **«موجّه واحد وثلاثة تحقيقات متوازية»** — ثلاثة وكلاء فرعيين مع `isolation: worktree`. يعمل كل منهم في بيئة معزولة خاصة به.
- **«ما الذي يعمل الآن؟»** — `claude agents`. لوحة لكل الجلسات مع مرشحات “running” و“blocked” و“done”.

## 5 أخطاء شائعة عند العمل باستخدام worktrees

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

أشيع المشكلات: نسيان `.worktreeinclude` وتعطل البيئة؛ والخلط بين worktree والفرع العادي وفقدان تغييرات غير ملتزم بها؛ وإبقاء أكثر من 5 جلسات متوازية ونسيان ما يجري في كل منها؛ وعدم ضبط `cleanupPeriodDays` فتتكدس المجلدات القديمة؛ ونسيان مربع حوار الوثوق في دليل جديد، ما يؤدي إلى فشل `--worktree` مع ظهور خطأ.

</div>

**1. شغّلت worktree، لكن `.env` غير موجود ولا يعمل شيء.** هذه المشكلة الأكثر شيوعًا. worktree هو checkout جديد بلا ملفات يتجاهلها Git. أضف ملف `.worktreeinclude` يتضمن `.env*` والإعدادات المحلية اللازمة عند إعداد وضع worktree لحل المشكلة. تأكد أن الملف في جذر المستودع، لا في `.claude/`.

**2. تريد الانتقال إلى الفرع الرئيسي، فتشغّل `cd` إلى الجذر وتفقد تغييراتك غير الملتزم بها في worktree.** المجلد الجذر وworktree نسختا عمل **مختلفتان**. عدت إلى الجذر باستخدام `cd`، وبقيت تغييرات worktree في مكانها ولم تختفِ. لكن إذا اختلط عليك الأمر وشغّلت `git stash` في المجلد الرئيسي معتقدًا أنك في worktree، فسيُنشأ stash على الفرع الرئيسي، لا على الفرع الذي توقعته.

**3. شغّلت 5 جلسات متوازية ولم تعد تتذكر ما تفعله كل واحدة.** تحذّر وثائق Anthropic صراحةً من أن معظم المطورين لا يستطيعون التعامل ذهنيًا مع أكثر من 2–3 جلسات. ومن علامات الحمل الزائد فتح Agent View والعجز عن تحديد ما يفعله كل وكيل فورًا. اقتصر على جلستين متزامنتين. وإذا تطلبت المهمة أكثر من ذلك، فمن الأفضل تنسيقها عبر `/goal` والوكلاء الفرعيين بدلًا من إدارتها يدويًا.

**4. لا تُنظّف worktrees التي أُطلقت باستخدام `-p` (وضع عديم الواجهة) تلقائيًا.** لا يعرض الأمر `claude --worktree feature-x -p "do thing"` مطالبة تفاعلية عند الخروج، لذلك لا تأتي لحظة يسأل فيها Claude: «أأزيل worktree؟». تتراكم هذه worktrees. نظّفها يدويًا: `git worktree remove .claude/worktrees/feature-x`. أو استخدم نصًا برمجيًا لـcron يزيل كل ما تجاوز عمره 7 أيام.

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

## التنظيف: ما الذي يُحذف تلقائيًا

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

تُزال worktree التي أُنشئت باستخدام `--worktree` تلقائيًا عند الخروج إذا لم تتضمن تغييرات (لا commits، ولا ملفات غير متعقبة، ولا تغييرات غير ملتزم بها). أما إذا وُجدت تغييرات، فسيسأل Claude. وتُزال worktrees الوكلاء الفرعيين و`/bg` تلقائيًا بواسطة مهلة `cleanupPeriodDays` في الإعدادات إذا كانت نظيفة. أما worktrees الناتجة عن `-p` فلا تنظّف مطلقًا؛ أزلها يدويًا باستخدام `git worktree remove`.

</div>

يعتمد منطق التنظيف على ما فعلته في worktree وكيف بدأت الجلسة. تسرد وثائق Anthropic ثلاثة سيناريوهات:

<figure>
<blockquote>
<p>إذا لم يتضمن worktree تغييرات غير ملتزم بها أو ملفات غير متعقبة أو commits جديدة، فستُزال worktree وفرعها تلقائيًا عند الخروج من الجلسة. وإذا كان للجلسة اسم، يسألك Claude بدلًا من إزالتها كي تتمكن من الاحتفاظ بـworktree لاستخدامه لاحقًا.</p>
</blockquote>
<figcaption>— Anthropic Docs, https://code.claude.com/docs/en/worktrees</figcaption>
</figure>

السيناريو 1: دخلت ولم تفعل شيئًا ثم خرجت؛ فأُزيلت worktree.

السيناريو 2: أنجزت بعض العمل ولم تودعه. عند الخروج سيسأل Claude: «الاحتفاظ أم الإزالة؟». يحفظ خيار «الاحتفاظ» المجلد والفرع لاستخدامهما لاحقًا. أما «الإزالة» فتحذف الدليل **مع** التغييرات غير الملتزم بها والـcommits الجديدة. هذا إجراء مدمّر؛ فلا تنقر على «الإزالة» بدافع العادة.

السيناريو 3: شغّلت الأمر باستخدام `-p` (وضع عديم الواجهة) ثم انتهى الأمر وخرج. تبقى worktree. نظّفها يدويًا:

```bash
git worktree remove .claude/worktrees/feature-x
```

إضافةً إلى ذلك، تُزال worktrees الوكلاء الفرعيين وجلسات `/bg` تلقائيًا بواسطة التنظيف في الخلفية إذا تجاوز عمرها `cleanupPeriodDays` يومًا (وهو إعداد تكون قيمته الافتراضية عادةً 30 يومًا) **ولم** يكن فيها عمل غير محفوظ. ولا يشمل التنظيف التلقائي worktrees التي أُنشئت باستخدام `--worktree`؛ فتقع مسؤولية إدارتها عليك.

## بدائل SVN وPerforce وMercurial: الخطاف `WorktreeCreate`

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

يستخدم وضع worktree الأمر `git worktree` افتراضيًا. ويمكنك توصيل آليتك الخاصة عبر الخطافين `WorktreeCreate` و`WorktreeRemove` في إعدادات Claude Code عند استخدام SVN أو Perforce أو Mercurial أو غيرها من أنظمة التحكم بالإصدارات. يتلقى الخطاف الاسم عبر stdin، ويجب أن يطبع مسار الدليل الذي أنشأه، ثم يخرج برمز 0. عند استخدام خطافك الخاص، لا تتم معالجة `.worktreeinclude`؛ لذا عليك نسخ الملفات المحلية بنفسك داخل الخطاف.

</div>

إذا كان المستودع يستخدم Subversion أو Mercurial، فلن يعمل الخيار `--worktree` مباشرةً. توفر Anthropic نقطة تمديد عبر خطافين: `WorktreeCreate` (لإنشاء نسخة معزولة) و`WorktreeRemove` (لإزالتها).

مثال خطاف SVN من الوثائق الرسمية:

```json
{
  "hooks": {
    "WorktreeCreate": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
          }
        ]
      }
    ]
  }
}
```

يقرأ الخطاف اسم worktree من stdin (`{ "name": "feature-auth" }`)، وينفّذ `svn checkout` إلى دليل محسوب مسبقًا، ثم يطبع المسار على stdout. ويستخدم Claude Code ذلك الدليل بوصفه دليل العمل للجلسة الجديدة.

تنبيه مهم: عند استخدام خطافك الخاص، لا يُستخدم `.worktreeinclude`. إذا احتجت إلى `.env` أو ملفات أخرى يتجاهلها Git في المجلد الجديد، فانسخها داخل نص الخطاف البرمجي.

## ما التالي: ثلاث آليات متجاورة للعمل بالتوازي

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="الخلاصة الرئيسية للقسم">

الخلاصة الرئيسية

يوفر worktree عزل الملفات. ويوفر `/bg` عزل السياق والرموز. ويوفر Subagent عزل المهمة والأدوات. ويوفر `/goal` الاستقلالية حتى يتحقق شرط ما. تحل كل آلية مشكلة بمفردها. ويمكنها مجتمعة تمكينك من إبقاء 3–5 مهام متوازية قيد التنفيذ من دون انهيار ذهني. والخطوة التالية المنطقية هي استكشاف الأدلة ذات الصلة بالوضع المستقل والوكلاء الفرعيين المخصصين وتدفقات العمل الديناميكية عبر الروابط أدناه.

</div>

يوفر worktree عزل الملفات. ويوفر `/bg` عزل السياق. وتوفر الوكلاء الفرعيون عزل المهام. تحل كل آلية مشكلة بمفردها. وباجتماعها، تتيح لك العمل على ثلاث إلى خمس مهام بالتوازي من دون انهيار ذهني. هذه هي مجموعة المهارات الكامنة وراء vibe coding المتقدم في 2026.

يتواصل هذا الموضوع طبيعيًا مع ثلاثة موضوعات ذات صلة: [كيفية إعداد وكيل مستقل باستخدام `/goal` وAgent View](https://ailoot.ai/blog/ar/claude-code-goal-agent-view/)، و[كيفية إنشاء وكلاء فرعيين خاصين بمهامك](https://ailoot.ai/blog/ar/claude-code-subagents/)، و[كيفية إطلاق مئات الوكلاء عبر Dynamic Workflows](https://ailoot.ai/blog/ar/claude-code-dynamic-workflows/).

<div class="section" role="doc-bibliography" aria-label="المصادر">

### المصادر

- [تشغيل جلسات متوازية باستخدام worktrees - Claude Code Docs](https://code.claude.com/docs/en/worktrees)
- [إنشاء وكلاء فرعيين مخصصين - Claude Code Docs](https://code.claude.com/docs/en/sub-agents)
- [سجل تغييرات Claude Code (مايو-يونيو 2026)](https://code.claude.com/docs/en/changelog)
- [تشغيل الوكلاء بالتوازي - Claude Code Docs](https://code.claude.com/docs/en/agents)
- [Agent View - Claude Code Docs](https://code.claude.com/docs/en/agent-view)
- [صفحة دليل git worktree](https://git-scm.com/docs/git-worktree)

</div>





[افتح Ailoot](https://ailoot.ai/).

## أسئلة شائعة

### هل ينسخ baseRef head التعديلات غير المثبتة إلى شجرة عمل جديدة؟

لا. يبدأ من commit ‏HEAD المحلي الحالي، بما فيه commits محلية غير موجودة في المستودع البعيد. تبقى التعديلات المتتبعة غير المثبتة في النسخة الأصلية؛ انقل WIP المطلوب صراحة وافحص شجرة العمل الجديدة.

### لماذا يغيب .env عن شجرة العمل الجديدة؟

شجرة العمل نسخة جديدة، ولذلك تغيب الملفات المحلية المتجاهلة في Git. يسرد `.worktreeinclude` في Claude Code الملفات المتجاهلة المراد نسخها؛ ويجب أن يتولى WorktreeCreate hook المخصص النسخ بنفسه. ضمّن فقط ما تحتاج إليه المهمة.


## Ailoot · الشركة ومحفظة مشاريعها

تستند Ailoot إلى خبرة تشغيلية متراكمة وقاعدة عملاء واسعة وخدمة مستقرة ومراقبة مستمرة لمؤشرات الأداء KPI.

الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.

توظف Ailoot هذه الخبرة التشغيلية لإتاحة الوصول عبر API إلى قدرات الذكاء الاصطناعي في منتجات العملاء ووكلائهم وتطبيقاتهم وعمليات الأتمتة.
