Codex worktree: עותק עבודה נפרד למשימה שנייה
Markdownעותק עבודה של Codex CLI 0.155.1: דגל worktree ניסיוני, HEAD של המקור, בדיקת התיקייה החדשה, שמירת התוצאה והסרה בטוחה.
קריאת המאמר המלא
הנקודה המרכזית
בגרסה 0.155.1 של Codex CLI, יוצרים עותק עבודה נפרד למשימה שנייה באמצעות codex --enable worktrees --worktree. התכונה ניסיונית ומושבתת כברירת מחדל: אם עדיין לא הפעלתם אותה, Codex יסרב להתחיל עם --worktree ללא --enable worktrees. העותק נוצר מהקומיט האחרון של הפרויקט המקורי (HEAD), ללא שינויים שלא בוצע להם commit, במצב HEAD מנותק — בלי ענף בעל שם שמשויך אליו.
לדוגמה, אתם משתמשים ב-Codex CLI כדי לשנות מבנה של מודול אחד, ובינתיים צצה משימה שנייה: לכתוב בדיקות למודול אחר. פתיחת הפעלה שנייה באותה תיקייה מסוכנת: קל לערבב בין השינויים של המשימה הראשונה והשנייה. הדגל --worktree יוצר תיקייה נפרדת של אותו פרויקט עבור המשימה השנייה, ומשאיר את הראשונה ללא שינוי.
משאבים מעשיים לעבודה עם סוכנים במקביל: התיעוד של Ailoot.
מה --worktree יוצר ואילו קבצים נכנסים לעותק
במונחי Git, worktree הוא תיקיית עבודה נוספת המקושרת לאותו מאגר: היא משתפת את היסטוריית הקומיטים, אך יש לה קבוצת קבצים משלה בדיסק. ב-Codex CLI 0.155.1, הדגל --worktree משתמש במנגנון הזה של Git כדי להתחיל הפעלה חדשה של סוכן בתיקייה נפרדת, ומשאיר ללא שינוי את התיקייה שבה כבר מתבצעת המשימה הראשונה.
עותק העבודה החדש מכיל את הקבצים מהקומיט שאליו HEAD של הפרויקט המקורי מצביע בעת ההפעלה — הקומיט האחרון, ולא המועד שבו שמרתם קובץ לאחרונה בעורך. הפקודה הזאת אינה מעבירה שינויים שלא בוצע להם commit או קבצים חדשים. שמירה בעורך אינה זהה לביצוע commit ב-Git. אם בתיקייה הראשונה עדיין יש שינויים שלא בוצע להם commit כשאתם מפעילים את המשימה השנייה, השינויים האלה יישארו רק בתיקייה הראשונה.
זה אינו גיבוי של המאגר כולו או בידוד של המחשב כולו. זוהי תיקיית עבודה שנייה של אותו פרויקט, עם גישה לאותו ענף ולאותה היסטוריית קומיטים. למנגנון דומה בכלי אחר, ראו Claude Code ו-git worktree: משימות במקביל.
הכנה: גרסה, אמון בפרויקט וקומיט
בדקו שלושה דברים לפני שמתחילים. הריצו את הפקודות מתוך תיקיית הפרויקט המקורי.
ראשית, בדקו את גרסת Codex CLI. ההוראות האלה חלות על גרסה 0.155.1; בגרסאות אחרות, בדקו בנפרד את התנהגות הדגלים:
codex --version
שנית, נדרש פרויקט Git מקומי שה-HEAD שלו מצביע על קומיט קיים — במילים אחרות, המאגר חייב להכיל לפחות קומיט אחד. אחרת, אין מקור שממנו אפשר ליצור את העותק.
שלישית, המקור צריך להיות מהימן: אם הפרויקט מסומן במפורש כלא מהימן, ההפעלה עם --worktree תיכשל לפני יצירת העותק. אם אתם רק מגדירים את Codex CLI, ההכנה הבסיסית מוסברת ב-Codex (OpenAI): מהו ואיך מתחילים.
בדקו מראש את רשימת עותקי העבודה הקיימים של המאגר הזה. תוכלו להשוות אליה אחרי ההפעלה:
git worktree list
תיקיות נפרדות עוזרות לשמור על הפרדה בין משימות. לגישה כוללת לעבודה עם סוכן, המשאבים המעשיים ב-תיעוד של Ailoot עשויים להועיל.
שלבים: התחילו עותק נפרד למשימה שנייה
הפעילו את התכונה הניסיונית והתחילו הפעלה עם עותק נפרד
הריצו את הפקודה מתוך תיקיית הפרויקט המקורי, שבה אתם כבר עובדים על המשימה הראשונה.
codex --enable worktrees --worktreeהתוצאה הצפויה: Codex יוצר עותק עבודה חדש של הפרויקט מתוך ה-HEAD הנוכחי ופותח בו הפעלה של סוכן. העותק נמצא במצב HEAD מנותק, בלי ענף בעל שם שמשויך אליו. כך הדגל פועל בגרסה 0.155.1.
הציגו שוב את עותקי העבודה בטרמינל אחר, מתוך הפרויקט המקורי
git worktree listהתוצאה הצפויה: הפלט כולל שורה נוספת עם הנתיב של העותק החדש וסימון HEAD מנותק (או ענף, אם יש כזה). הרשימה הזאת מראה ש-Git רשם את העותק, אך אינה מאשרת שהסוכן השלים את המשימה. כדי לוודא שהקבצים נמצאים שם, פתחו את התיקייה בנתיב שברשימה ובדקו את תוכנה.
איך לבדוק את התוצאה ולשמור את העבודה
לאחר שהמשימה השנייה בעותק החדש הושלמה, צריך לשמור ולהעביר את התוצאה בנפרד. הפקודה --worktree אינה ממזגת שינויים לענף הראשי ואינה מעבירה את התוצאה באופן אוטומטי. העותק נשאר במצב HEAD מנותק, ולכן ביצוע commit בתוכו אינו יוצר כשלעצמו ענף חדש. אם צריך לשמור את הקומיטים האלה, שייכו אותם לענף או העבירו אותם לפרויקט הראשי לפני מחיקת תיקיית העותק.
אל תמחקו את תיקיית העותק לפני ששמרתם את התוצאה. בדיקה שתיקיית העבודה נקייה אינה תחליף לשמירת הקומיטים שאתם צריכים: ייתכן שעדיין אין להם ענף משויך.
אם אתם עובדים בו-זמנית על משימות בכלים שונים, תכננו מראש איך למנוע מהן להפריע זו לזו. עבודה משותפת עם שני סוכנים מוסברת ב-Claude Code ו-Codex יחד.
אם ההפעלה נקטעה: היכן למצוא את העותק
הפעלה עם --worktree עלולה להיכשל מכמה סיבות:
- התכונה לא הופעלה מראש ופקודת ההפעלה אינה כוללת
--enable worktrees: Codex יסרב להתחיל עם הדגל--worktree; - אתם בתיקייה הלא נכונה, או שאין קומיט: אם התיקייה הנוכחית אינה מאגר Git או שעדיין אין בה קומיטים, אין מקור שממנו אפשר ליצור את העותק;
- הפרויקט מסומן במפורש כמקור לא מהימן: Codex יסרב להתחיל הפעלה עם
--worktree. ודאו תחילה שפתחתם את הפרויקט הנכון. אל תשנו אוטומטית את מצב האמון שלו.
אם ההפעלה לא הצליחה להתחבר לעותק החדש שנוצר — לדוגמה, כי התהליך נקטע — תיקיית העבודה אינה נמחקת אוטומטית. בדקו תחילה את רשימת עותקי העבודה, ולפני מחיקת דבר כלשהו, ודאו שאף הפעלת Codex CLI עדיין לא משתמשת בעותק הזה:
git worktree list
פתחו את התיקייה ושמרו כל שינוי שאתם צריכים לפני מחיקתה. ייתכן שהעותק יישאר גם אם הפעלת הסוכן לא הסתיימה. אם העותק קיים, אין בו עוד צורך, וברור שאף הפעלה אינה משתמשת בו, הסירו אותו ידנית באמצעות git worktree remove מתוך המאגר המקורי, וציינו את הנתיב של התיקייה. אל תוסיפו --force: אם יש בעותק קבצים שלא בוצע להם commit או קבצים לא במעקב, הפקודה תסרב למחוק אותו. אם היא מסרבת, בדקו את תוכן התיקייה בלי להשבית את אמצעי ההגנה.
בעת עדכון Codex CLI, בדקו שוב את codex --version וחזרו על הבדיקה עם git worktree list: ייתכן שדגלים ניסיוניים יפעלו אחרת בין גרסאות.
משאבים וכלים נוספים: Ailoot.
פרטים נוספים
שאלות ותשובות: Codex worktree: עותק עבודה נפרד למשימה שנייה | Ailoot
האם ה-worktree השני יכלול עריכות שלא נשמרו או לא בוצע להן commit?
לא. בגרסת ה-CLI המתוארת הוא מתחיל מה-commit שאליו HEAD של מאגר המקור מצביע. שינויים ללא commit וקבצים חדשים נשארים בתיקייה המקורית, ולכן שמירת קובץ בעורך אינה מספיקה להעברתו.
האם בטוח למחוק worktree נקי במצב detached?
תיקייה נקייה עדיין יכולה להכיל commits ללא ענף בשם. שמרו או העבירו אותם קודם, בדקו שאף הפעלה אינה משתמשת ב-worktree ואז השתמשו בהסרת Git worktree רגילה בלי לכפות מעבר לאמצעי הגנה.