تخطَّ إلى المحتوى
GitTree

Git ووكلاء الذكاء الاصطناعي

شرح git worktree: شغّل Claude Code وCodex بالتوازي دون تعارض

تمنح git worktree كل وكيل برمجة بالذكاء الاصطناعي مجلدًا وفرعًا خاصين به داخل المستودع نفسه. إليك كيف تنشئ شجرة عمل لكل وكيل، وتتابعها كلها من واجهة Git رسومية، وتدمج النتائج دون تعارض.

بقلم Eslam Faisalآخر تحديث قراءة في 11 دقيقة
طرفية مدمجة أسفل مخطط الإيداعات في GitTree

شجرة العمل (git worktree) مجلد عمل إضافي مرتبط بالمستودع نفسه: له فرعه المستخرج (checked out) ومنطقة التجهيز (staging area) وملفاته الخاصة، بينما تتشارك أشجار العمل كلها الإيداعات (commits) والفروع والمستودعات البعيدة نفسها. لهذا يُعد git worktree أبسط طريقة لتشغيل وكلاء الذكاء الاصطناعي بالتوازي، مثل Claude Code وCodex: امنح كل وكيل شجرة عمل خاصة به، فيعدّل ويبني ويختبر وينشئ إيداعاته في الوقت نفسه دون أن يلمس ملفات غيره، ودون استنساخ ثانٍ للمستودع.

وكيلان في مجلد واحد يتشاركان شجرة عمل واحدة: أحدهما يشغّل الاختبارات على ملفات لم ينتهِ الآخر من إعادة كتابتها، وأمر git checkout من أيٍّ منهما يسحب البساط من تحت قدمي الآخر. الاستنساخات المنفصلة تحل المشكلة لكنها تحتاج إلى fetch لكل نسخة، أما أشجار العمل فتمنحك مجلدات منفصلة مع بساطة مستودع واحد.

ما هي git worktree، وما الذي تتشاركه أشجار العمل؟

يبدأ كل مستودع بشجرة عمل واحدة هي شجرة العمل الرئيسية: المجلد الذي أنشأه git clone أو git init. أما git worktree add فينشئ أشجار عمل مرتبطة، أي مجلدات إضافية متصلة ببيانات .git نفسها. وبحسب توثيق git worktree الرسمي، تتشارك شجرة العمل المرتبطة كل شيء مع المستودع ما عدا الملفات الخاصة بكل شجرة، مثل HEAD والفهرس (index). عمليًا:

ما تحتفظ به كل شجرة عمل لنفسها وما تتشاركه أشجار العمل كلها
جزء المستودعنسخة خاصة أم مشتركة؟ماذا يعني ذلك لتشغيل الوكلاء بالتوازي
ملفات العملنسخة خاصةتعديلات وكيل لا تكتب أبدًا فوق ملفات وكيل آخر
HEAD والفرع المستخرجنسخة خاصةيبقى كل وكيل على فرعه
الفهرس (منطقة التجهيز)نسخة خاصةأمر git add في شجرة عمل لا يجهّز شيئًا في غيرها
الإيداعات والكائنات (objects)مشتركةالإيداع الذي يُنشأ في أي شجرة عمل يظهر في جميعها
الفروع والوسوم (tags)مشتركةيمكنك دمج فرع الوكيل من مجلدك الرئيسي دون fetch
إعدادات المستودعمشتركة افتراضيًاالمستودعات البعيدة والأسماء المختصرة (aliases) تسري في كل شجرة عمل

وتهمّ الوكلاءَ قاعدةٌ واحدة: افتراضيًا يرفض git worktree add استخراج فرع مستخرج بالفعل في شجرة عمل أخرى. لذلك يحتاج كل وكيل إلى فرعه الخاص، وهذا بالضبط ما تريده وقت المراجعة.

كيف تنشئ شجرة عمل بالأمر git worktree add

نفّذ الأوامر من داخل مستودعك، وضع أشجار العمل الجديدة بجواره لا داخله، حتى لا تفهرس المحررات وأدوات البحث والوكلاء نسخةً من داخل نسخة أخرى. ينشئ هذا المثال شجرتي عمل، كلٌّ منهما على فرع جديد يبدأ من main:

cd ~/code/myapp
git worktree add -b agent/auth-refactor ../myapp-auth main
git worktree add -b agent/flaky-tests ../myapp-tests main
git worktree list

الخيار -b ينشئ الفرع، والمسار هو المجلد الجديد، والوسيط الأخير هو الإيداع الذي تبدأ منه. ويطبع git worktree list كل شجرة عمل مع مجلدها وإيداعها وفرعها. ولاستخدام فرع موجود مسبقًا احذف -b: git worktree add ../myapp-review feature/login.

وكيل ذكاء اصطناعي لكل شجرة عمل: طريقة العمل بالتوازي

النمط بسيط: مهمة واحدة، وفرع واحد، وشجرة عمل واحدة، وجلسة وكيل واحدة. تبقى أنت في شجرة العمل الرئيسية مراجعًا، ولا يتشارك الوكلاء مجلدًا أبدًا. وأهم ما في الأمر طريقة تقسيم العمل. المهام المناسبة للتوازي هي:

  • في أجزاء مختلفة من الشيفرة، مثل إعادة هيكلة في auth/ واختبارات جديدة في billing/، فنادرًا ما تمس فروعها الأسطر نفسها.
  • واضحة الانتهاء: اختبار فاشل يجب أن ينجح، أو نقطة نهاية (endpoint) تُضاف، أو اعتمادية تُحدَّث.
  • صغيرة بما يكفي لمراجعتها في جلسة واحدة. فرق (diff) ضخم من وكيل هو مشكلة مراجعة أيًّا كان المجلد الذي جاء منه.

كيف تشغّل وكلاء الذكاء الاصطناعي بالتوازي باستخدام git worktree

  1. أودِع عملك الحالي أو خزّنه مؤقتًا (stash)

    تبدأ أشجار العمل الجديدة من إيداع، وتبقى التغييرات غير المودَعة في مجلدك الرئيسي، فليبدأ كل وكيل من الحالة المودَعة نفسها.

  2. أنشئ شجرة عمل لكل مهمة

    نفّذ git worktree add -b agent/<task> ../<repo>-<task> main مرة لكل مهمة، أو أنشئ أشجار العمل من واجهة Git رسومية.

  3. جهّز كل مجلد

    ثبّت الاعتماديات، وانسخ ملفات البيئة التي يحتاجها المشروع، وشغّل البناء مرة واحدة، حتى يبدأ كل وكيل من نسخة تعمل.

  4. شغّل وكيلًا واحدًا في كل مجلد

    افتح طرفية لكل شجرة عمل وشغّل وكيلك فيها، مثلًا claude في واحدة وcodex في أخرى، مع تعليمات محددة تسمّي الجزء الذي يملكه كل وكيل.

  5. راجِع وادمج ونظّف

    عندما ينتهي الوكيل، اقرأ الفروقات، وادمج فرعه من شجرة العمل الرئيسية، ثم أزل شجرة العمل واحذف الفرع.

cd ../myapp-auth && claude
cd ../myapp-tests && codex

شغّل كل سطر في طرفية مستقلة، فتعمل اختبارات كل وكيل وعمليات البناء على ملفاته هو.

الخيار --worktree في Claude Code

يستطيع Claude Code إنشاء شجرة العمل بنفسه. فبحسب توثيق أشجار العمل في Claude Code، ينشئ الأمر claude --worktree feature-auth (أو -w) شجرة عمل داخل .claude/worktrees/feature-auth/ على فرع جديد اسمه worktree-feature-auth، متفرّعًا من الفرع الافتراضي للمستودع ما لم يحدد الإعداد worktree.baseRef غير ذلك. ويمكن لملف .worktreeinclude نسخ ملفات متجاهَلة مثل .env إلى كل شجرة عمل جديدة. وعند الخروج يزيل Claude Code شجرة العمل النظيفة وفرعها في الجلسة غير المسمّاة، ويسألك قبل إزالة شجرة فيها تغييرات أو إيداعات جديدة.

claude --worktree feature-auth

تطبيق Codex وأداة Codex CLI

يصف توثيق أشجار العمل في تطبيق Codex من OpenAI أشجارَ عمل تتيح لـ Codex تشغيل عدة محادثات في مشروع واحد. افتراضيًا تُنشأ في $CODEX_HOME/worktrees انطلاقًا من فرع تختاره، وتبدأ بحالة detached HEAD لا على فرع. وفي ترويسة المحادثة ينقل زر Hand off المحادثة بين شجرة العمل ونسختك المحلية، ويحوّل زر Create branch here عمل الشجرة إلى فرع يمكنك مراجعته ودمجه. أما مع Codex CLI فتشغّل codex من مجلد المشروع، لذا شغّله داخل شجرة العمل التي أنشأتها.

وفي الحالتين هي أشجار عمل Git عادية، يعرضها git worktree list وأي واجهة Git رسومية تقرأ قائمة أشجار العمل.

واجهة رسومية لإدارة git worktree: متابعة مجلد كل وكيل وفرعه

حين يعمل ثلاثة وكلاء أو أربعة، يصبح الصعب هو المتابعة: أي فرع في أي مجلد، وأي وكيل ما زال يغيّر الملفات. وGitTree، عميل Git لأنظمة ماك (macOS) وويندوز (Windows) ولينكس (Linux) الذي ينشر هذه المدونة (مجاني اليوم، والمستودعات الخاصة مشمولة)، يقرأ أشجار العمل التي يعرفها Git مسبقًا، ومنها ما أنشأه Claude Code أو Codex، ويمنح كلًّا منها مكانًا في الواجهة.

في GitTree يسرد قسم WORKTREES في اللوحة الجانبية كل أشجار العمل، وتضم قائمة الفرع الأمر Create Worktree for This Branch (لقطة من الواجهة الإنجليزية).
في GitTree يسرد قسم WORKTREES في اللوحة الجانبية كل أشجار العمل، وتضم قائمة الفرع الأمر Create Worktree for This Branch (لقطة من الواجهة الإنجليزية).
  • قسم «أشجار العمل» في اللوحة الجانبية. كل أشجار العمل، والرئيسية أولًا، باسم فرعها (أو باسم مجلدها حين تكون detached)، مع علامة صح على الشجرة المفتوحة في علامة التبويب الحالية، وتُوسَم الأشجار المقفلة والمنفصلة والمفقودة.
  • أشجار العمل الشقيقة على رؤوس الفروع. يضع مخطط الإيداعات علامة لكل شجرة عمل أخرى على رأس فرعها مع عدد التغييرات التي فيها، وهي طريقة سريعة لمعرفة أي الوكلاء ما زال يعدّل. والنقر على العلامة يفتح علامة تبويب تلك الشجرة.
  • أنشئ شجرة عمل من حيث أنت. مع «إنشاء شجرة عمل…» من لوحة الأوامر أو «إنشاء شجرة عمل من هذا الإيداع…» على إيداع، تختار فرعًا جديدًا أو استخراجًا منفصلًا (detached) ثم المجلد، أما «إنشاء شجرة عمل لهذا الفرع…» على فرع فيستخرج ذلك الفرع نفسه في المجلد الجديد.
  • علامة تبويب لكل شجرة عمل، ومعها طرفيتها. يفتح أمر «فتح شجرة العمل في علامة تبويب جديدة» الشجرة كأي مستودع، وتبدأ الطرفية المدمجة أسفل المخطط في مجلد تلك الشجرة بواجهة الأوامر (shell) التي تستخدمها، فتشغّل claude أو codex من هناك مباشرة.
  • القفل والنقل والإزالة والتقليم والإصلاح. اقفل شجرة عمل مع سبب اختياري، أو انقل مجلدها، أو أزلها. يرفض Git إزالة شجرة فيها تغييرات غير مودَعة، ويبقى الفرع بعد الإزالة. ويعرض «تقليم أشجار العمل المتقادمة…» ما سيحذفه Git قبل حذفه، أما «إصلاح روابط أشجار العمل» فيعيد ربط شجرة عمل نقلتها يدويًا إذا شغّلته منها.

كل إجراء يشغّل Git المثبّت لديك، فتأتي النتيجة مطابقة لسطر الأوامر:

أوامر git worktree ونظائرها في GitTree (بأسمائها في الواجهة العربية)
المهمةسطر الأوامرفي GitTree
الإنشاءgit worktree add -b <branch> <path> <start>«إنشاء شجرة عمل…» (لوحة الأوامر، أو قائمة الإيداع أو الفرع)
العرضgit worktree listقسم «أشجار العمل» وعلامات رؤوس الفروع
الفتحcd <path>«فتح شجرة العمل في علامة تبويب جديدة»
القفلgit worktree lock --reason "<text>" <path>«قفل شجرة العمل…» (السبب اختياري)
النقلgit worktree move <path> <new-path>«نقل شجرة العمل…»
الإزالةgit worktree remove <path>«إزالة شجرة العمل…»
التقليمgit worktree prune«تقليم أشجار العمل المتقادمة…» (مع معاينة)
الإصلاحgit worktree repair«إصلاح روابط أشجار العمل»

وتسرد صفحة ميزات GitTree كل ما يفعله التطبيق، ويشرح مقال واجهة Git الرسومية أم سطر الأوامر متى يكون كلٌّ منهما أسرع.

دمج عمل عدة وكلاء ذكاء اصطناعي

لأن الفروع مشتركة، ترى شجرة عملك الرئيسية فرع كل وكيل لحظة إنشائه إيداعًا. تعامل مع كل فرع كأنه طلب دمج (pull request) من زميل: موثوق، لكنه يُراجَع.

  1. اقرأ الفروقات أولًا. قارن فرع الوكيل بـ main مقطعًا مقطعًا، وابحث عن تعديلات خارج المهمة، واختبارات محذوفة، واعتماديات جديدة.
  2. افحص التداخل. يتوقع GitTree التعارضات قبل الدمج، ويحذّرك بجوار اسم الفرع إذا كان سيتعارض مع main، وينبّهك حين تمس فروع أخرى غير مدموجة الملفات نفسها، وكل ذلك يُحسب على جهازك. ومع عدة فروع للوكلاء، يكشف لك هذا ترتيب الدمج الأقل ألمًا.
  3. رتّب السجل. ادمج الإيداعات المرحلية بـ squash عبر إعادة الأساس التفاعلية (interactive rebase) من واجهة رسومية، داخل شجرة عمل ذلك الوكيل، لأن Git لا يستخرج فرعًا مستخرجًا في مجلد آخر.
  4. ادمج أو افتح طلب دمج. نفّذ merge من شجرة العمل الرئيسية، أو اسحب فرع الوكيل في GitTree وأفلته على main لتدمجه أو تعيد أساسه (rebase) أو تبدأ طلب دمج.
  5. احتفظ بطريق للعودة. إذا غيّر وكيلان الأسطر نفسها فراجع شرح حل تعارضات الدمج في Git، وإذا ساءت نتيجة الدمج يمكنك التراجع عن merge أو reset أو rebase.
  6. نظّف. أزل شجرة العمل، ثم احذف الفرع المدموج.
git switch main
git merge --no-ff agent/auth-refactor
git worktree remove ../myapp-auth
git branch -d agent/auth-refactor

أخطاء شائعة مع git worktree ووكلاء الذكاء الاصطناعي

  • فرض فرع واحد على شجرتي عمل. يتجاوز --force رفض Git، لكن الثمن مجلدان يتنازعان على فرع واحد. افتح شجرة العمل الموجودة بدلًا من ذلك، ويخبرك GitTree أين استُخرج ذلك الفرع.
  • افتراض أن أشجار العمل تعزل كل شيء. إنها تعزل الملفات لا الخدمات. الوكلاء الذين يشغّلون خوادم تطوير على المنفذ نفسه أو يطبّقون ترحيلات (migrations) على قاعدة البيانات المحلية نفسها سيتصادمون رغم ذلك، فامنح كل شجرة عمل منفذها وقاعدة بيانات اختبار خاصة بها.
  • حذف المجلدات أو نقلها يدويًا. يحتفظ Git بسجل لكل شجرة عمل. يبقى سجل المجلد المحذوف حتى يزيله git worktree prune (أو التنظيف التلقائي الذي يجريه Git بعد مدة طويلة)، ويعيد git worktree repair ربط المجلد المنقول إذا شغّلته من داخله. واقفل أشجار العمل الموجودة على أقراص غير متصلة دائمًا حتى لا يمسها التقليم.
  • الإزالة القسرية لعمل لم تراجعه. يرفض git worktree remove إزالة شجرة فيها تغييرات ما لم تضف --force، فاقرأ الفروقات أولًا. وتترك تشغيلات Claude Code غير التفاعلية بالخيار -p أشجار عملها مقفلة حتى تحررها جلسة لاحقة، فألغِ قفل الشجرة قبل أن تزيلها بنفسك.
  • إغلاق علامة التبويب التي يعمل فيها الوكيل. في GitTree تتبع الطرفية المدمجة علامة تبويب المستودع، وإغلاق العلامة يوقف جلسات طرفيتها، ومنها أي وكيل يعمل فيها.
  • تشغيل وكلاء أكثر مما تستطيع مراجعته. المراجعة هي عنق الزجاجة الحقيقي. ابدأ بمهمتين أو ثلاث بالتوازي، وأضف المزيد حين يصبح دمجها أمرًا روتينيًا.

جرّب أشجار العمل في مهمتك القادمة

أوامر أشجار العمل في Git هي كل ما تحتاجه للبدء، والواجهة الرسومية تسهّل متابعة عدة أشجار معًا. GitTree مجاني اليوم، والمستودعات الخاصة مشمولة، على macOS وWindows وLinux. يحتاج إلى حساب GitTree مجاني وإلى Git 2.39 أو أحدث، وعلى Ubuntu 22.04 حدّث Git على Ubuntu أولًا. اتبع دليل التثبيت على لينكس أو انتقل إلى صفحة تحميل GitTree.

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

ما الفرق بين git worktree وgit clone؟

ينسخ الاستنساخ (clone) المستودع كله إلى مجلد جديد بقاعدة كائنات خاصة به، فلا تصل فروعه وإيداعاته إلى نسخة أخرى إلا عبر push ثم fetch. أما شجرة العمل فمجلد إضافي للمستودع نفسه: الإيداعات والفروع مشتركة فورًا، بينما يحتفظ كل مجلد بملفاته وفرعه ومنطقة التجهيز الخاصة به.

هل يمكن أن تستخرج شجرتا عمل الفرع نفسه؟

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

هل يدعم Claude Code أشجار عمل Git؟

نعم. يصف توثيق Claude Code الخيار --worktree، أو -w اختصارًا، الذي ينشئ شجرة عمل داخل .claude/worktrees على فرع جديد ويبدأ الجلسة داخلها. ويمكنك أيضًا إنشاء شجرة العمل بنفسك بالأمر git worktree add، ثم الانتقال إلى مجلدها وتشغيل Claude Code هناك، وتعمل الطريقة نفسها مع Codex.

كيف أحذف شجرة عمل Git بأمان؟

نفّذ git worktree remove مع مسار المجلد. يرفض Git الإزالة ما دامت في الشجرة تغييرات غير مودَعة أو ملفات غير متتبَّعة، فراجعها أو أودِعها أولًا، ولا تستخدم خيار الفرض إلا إذا كنت متأكدًا. يبقى الفرع بعد الإزالة، فاحذفه وحده بعد دمجه. وإن حذفت المجلد يدويًا فإن git worktree prune يزيل السجل المتبقي.

هل تتشارك أشجار العمل مجلد node_modules أو ملف .env أو ملفات البناء؟

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

ما أفضل أداة لإدارة git worktree بواجهة رسومية؟

ابحث عن عميل يسرد كل أشجار العمل، ويبيّن فرع كل شجرة وهل فيها تغييرات، ويضيف أشجار العمل ويقفلها وينقلها ويزيلها ويقلّمها ويصلحها دون طرفية. GitTree، المجاني اليوم على macOS وWindows وLinux، يفعل كل ذلك، ويضع علامات أشجار العمل الشقيقة على رؤوس فروعها في مخطط الإيداعات.

هل يشغّل GitTree وكلاء الذكاء الاصطناعي في أشجار العمل نيابةً عني؟

لا. يدير GitTree أشجار العمل ويمنح كلًّا منها علامة تبويب خاصة، فيها طرفية مدمجة تبدأ في مجلد تلك الشجرة، وأنت من يشغّل Claude Code أو Codex أو أي وكيل آخر فيها. وبشكل منفصل، يستطيع GitTree كتابة مسودات رسائل الإيداع وأوصاف طلبات الدمج عبر Claude Code أو Codex أو Antigravity CLI الخاص بك عندما تطلب ذلك.

المصادر

تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 6 أكتوبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.