Worktree Isolation: להריץ כמה Claude Code agents במקביל בלי שידרסו אחד את השני

בשורה התחתונה

Worktree Isolation זה פיצ'ר רשמי של Claude Code שמאפשר להריץ כמה agents במקביל באותו ה-repo בלי שהם דורסים אחד לשני את הקבצים.

איור פתיחה למדריך: Worktree Isolation

מה זה Worktree Isolation

Worktree Isolation זה פיצ’ר רשמי של Claude Code שמאפשר להריץ כמה agents במקביל באותו ה-repo בלי שהם דורסים אחד לשני את הקבצים. מאחורי הקלעים זה עוטף את ה-

git worktree הוותיק (קיים בגיט מאז 2015), אבל Claude Code עושה את כל העבודה השחורה אוטומטית, יוצר את התיקייה, יוצר branch חדש, נכנס לסשן בתוכה, וגם מנקה אחרי שסיימת.

הפיצ’ר עברה ליטוש משמעותי בגרסאות 2.1.126-2.1.144 של Claude Code (אפריל, מאי 2026), כולל .worktreeinclude להעתקת קבצי .env ו-hooks של WorktreeCreate / WorktreeRemove.

הבעיה שזה פותר

בלי isolation, שני סוכנים שעובדים על אותה תיקייה זה תאונת דרכים מובטחת:

  • סוכן A פותח את src/api.ts, מתחיל לערוך.
  • סוכן B פותח באותו רגע את אותו קובץ, עורך משהו אחר.
  • שניהם שומרים: האחרון מנצח. העבודה של הראשון נמחקת בשקט.
  • שניהם נלחמים על אותו HEAD ועל אותו index של git.

הנזק לא מוצא את עצמו בלוג שגיאות. אתה פשוט מגלה ש-feature שלם נעלם, וצריך לעשות git reflog כדי לשחזר.

הפקודה: בגרסה הקצרה

פותחים טרמינל בתיקיית ה-repo ומריצים:

claude --worktree feature-auth

זהו. Claude יוצר עבורכם:

  • תיקייה חדשה ב-.claude/worktrees/feature-auth/
  • branch חדש בשם worktree-feature-auth
  • סשן חדש של Claude בתוך התיקייה החדשה, מבודד לחלוטין מהסשנים האחרים.

3 דוגמאות שכדאי להכיר

עם שם מותאם (מומלץ: קל לזכור על מה כל סוכן עובד):

claude --worktree bugfix-123

בלי שם: Claude ייצר שם רנדומלי קריא כמו bright-running-fox:

claude --worktree

ישירות מ-Pull Request: מבסיס ה-branch של ה-PR:

claude --worktree "#1234"

יש גם flag קצר: -w עושה אותו דבר כמו --worktree.

שלב אחר שלב: להפעיל את זה אצלכם

שלב 1: trust ראשוני

פעם ראשונה בתיקייה: חייבים פשוט להריץ claude ולאשר את ה-workspace trust dialog. אחר כך אפשר להשתמש ב---worktree.

cd ~/projects/my-app
claude

(כשמופיע המסך הראשון, מאשרים. סוגרים את הסשן.)

שלב 2: להוסיף ל-.gitignore

אל תשכחו להוסיף את התיקייה ל-.gitignore כדי שתיקיות ה-worktree של Claude לא יופיעו כקבצים לא מסומנים בתוך ה-repo הראשי שלכם:

.claude/worktrees/

שלב 3: להגדיר .worktreeinclude לקבצים פרטיים

worktree חדש זה checkout נקי. זה אומר שכל קובץ שנמצא ב-.gitignore, כמו .env, .env.local, או קונפיגים פרטיים, לא יהיה שם. הסוכן ינסה להריץ ויקבל שגיאות.

הפתרון: יוצרים קובץ .worktreeinclude בשורש ה-repo עם הקבצים שאתם רוצים להעתיק (תחביר זהה ל-.gitignore):

.env
.env.local
.env.development
config/local.json

חשוב: רק קבצים שגם ב-.gitignore וגם ב-.worktreeinclude יועתקו. זה מנגנון הגנה כדי שלא תעתיקו בטעות קוד פרטי לכל worktree.

שלב 4: להריץ את הסוכן הראשון

claude --worktree feature-auth

Claude קופץ ישר לסשן חדש בתוך התיקייה החדשה. עובד רגיל: מתאר משימה, הסוכן יוצר commits ל-branch שלו.

שלב 5: שני סוכנים במקביל

בטרמינל שני (חלון נפרד, לא tab באותו טרמינל), בתוך תיקיית ה-repo הראשי:

claude --worktree bugfix-payment

כל סוכן רואה רק את ההעתק שלו, ב-branch משלו. אפס התנגשויות.

שלב 6: התקנת תלויות בכל worktree

worktree חדש זה תיקייה חדשה, אז אין שם node_modules / .venv / מה שלא יהיה. אם הסוכן צריך להריץ קוד, הוא חייב להתקין קודם:

npm install
# או
uv pip install -e .

שלב 7: סקירה ומיזוג

שהסוכן סיים, חוזרים ל-repo הראשי ובודקים את ה-diff:

git diff main...worktree-feature-auth

טוב? ממזגים:

git merge worktree-feature-auth

רע? זורקים:

git worktree remove .claude/worktrees/feature-auth
git branch -D worktree-feature-auth

טבלת דגלים ופקודות

פקודהמה היא עושה
claude --worktree <name>יוצר worktree בשם הנתון, branch worktree-<name>, ופותח סשן בתוכו.
claude -w <name>זהה לקודם, רק קצר יותר.
claude --worktree "#1234"יוצר worktree מבוסס ה-branch של Pull Request #1234.
claude --worktreeשם אוטומטי כמו bright-running-fox: שימושי לסשנים מהירים שלא תזכרו את השם שלהם בכל מקרה.
git worktree listמציג את כל ה-worktrees הפעילים ב-repo, איזה branch בכל אחד, איפה הם, ומה התקיעות שלהם.
git worktree remove <path>מוחק worktree. עובד רק אם נקי: להוסיף —force אם יש שינויים לא ממוזגים.

הגדרות מתקדמות

worktree.baseRef

כברירת מחדל Claude יוצר את ה-worktree מ-origin/HEAD (כלומר נקי מהשרת). אם אתם רוצים שזה יסתעף מה-HEAD המקומי שלכם (כדי לגרור איתכם שינויים שעוד לא דחפתם), הוסיפו לקובץ ה-settings:

{
  "worktree": {
    "baseRef": "head"
  }
}

Hooks: WorktreeCreate ו-WorktreeRemove

Claude מציע 2 hooks שרצים אוטומטית כשנוצר או נמחק worktree. שימושי להתקין תלויות אוטומטית, להעתיק קבצים מורכבים שדורשים סקריפט, או לשגר התראה ל-Slack. דוגמה ל-WorktreeCreate שמתקין dependencies:

{
  "hooks": {
    "WorktreeCreate": "npm install"
  }
}

גם זה נכנס לאותו קובץ ~/.claude/settings.json או .claude/settings.json של הפרויקט.

דוגמה מהחיים

אתם בונים feature חדש של אימות משתמשים. במקביל יש באג קריטי בפרודקשן שצריך לתקן. שני דברים שונים, ועדיף שלא יתנגשו:

טרמינל 1: feature חדש

cd ~/projects/saas-app
claude --worktree auth-magic-link

בתוך הסשן: “תוסיף ל-API endpoint של login תמיכה ב-magic link, כולל טבלת tokens במיגרציה.”

טרמינל 2: תיקון פרודקשן

cd ~/projects/saas-app
claude --worktree hotfix-payment-timeout

בתוך הסשן: “ב-Stripe webhook handler, להוסיף retry עם backoff על timeout בקריאה ל-DB.”

אחרי שעה

רואים מה כל אחד עשה:

git worktree list

מקבלים פלט כזה:

/Users/me/projects/saas-app                    abc1234 [main]
/Users/me/projects/saas-app/.claude/worktrees/auth-magic-link    def5678 [worktree-auth-magic-link]
/Users/me/projects/saas-app/.claude/worktrees/hotfix-payment-timeout    9012abc [worktree-hotfix-payment-timeout]

ה-hotfix דוחף לפרודקשן מיד. ה-feature ממשיך עד שאתם מרוצים. אפס התנגשויות, אפס “מי דרס למי”.

טיפים מהשטח

  • שמות תיאוריים: לא agent-1 ו-agent-2 אלא feature-auth, fix-stripe-timeout. עוד שבוע לא תזכרו מה היה ב-agent-1.
  • תמיד טרמינל נפרד לכל סוכן, לא tab. tabs באותו טרמינל לפעמים חולקים environment variables ובלגנים.
  • אחרי שמיזגתם, מנקים את ה-worktree באותו רגע. הם תופסים מקום ונערמים מהר.
  • אם עובדים עם monorepo, .worktreeinclude חייב לכלול גם קונפיגים של ה-workspace (lerna, nx, turbo), לא רק .env.
  • ה-baseRef ברירת המחדל זה origin/HEAD. אם אתם מסתעפים מ-feature branch שלכם שעוד לא דחוף, החליפו ל-head.
  • ה-EnterWorktree tool עובד גם בתוך סשן קיים. אם התחלתם בסשן רגיל וגיליתם שצריך isolation, פשוט תגידו ל-Claude “transfer this to a worktree”.
  • סשנים לא אינטראקטיביים (claude -p) לא מנקים את ה-worktree אוטומטית. לזכור להריץ git worktree remove ידנית.

מה זה לא פותר

  • תלויות (node_modules, .venv): יש להתקין מחדש בכל worktree, או להגדיר WorktreeCreate hook.
  • תהליכים שמאזינים לאותו port: אם שני סוכנים מריצים npm run dev על פורט 3000, רק אחד יצליח.
  • DB משותף: שני סוכנים שעושים מיגרציות על אותו DB מקומי יתנגשו. השתמשו ב-DB לכל worktree או ב-snapshots.
  • תהליכי build משותפים (cache של webpack/vite ב-/tmp), לפעמים יוצרים race conditions עדינים.
  • Mac/Linux בלבד: Windows native לא נתמך מלא, אבל WSL2 עובד מצוין.

לינקים

נכתב על ידי

מוביל AI ודאטה בקבוצה עסקית גדולה, מעביר סדנאות ובונה סוכני AI לארגונים.

עודכן לאחרונה:

רוצים שהצוות שלכם יעבוד ככה?

אני עובד עם צוותי פיתוח על Claude Code, סוכני קוד, MCP ותשתיות AI, מהתכנון ועד הייצור.

5,000+ חברים בקהילת Vibe Coding Israel

הקהילה הגדולה בישראל לבנייה עם AI: שאלות, דמואים, מדריכים ומפגשים. בלי ספאם, רק אנשים שבונים.

הצטרפות לקבוצה (נפתח בחלון חדש)

המספר מתעדכן ידנית. נכון ל-10/2026.