Codex worktree: en separat arbejdskopi til en anden opgave
MarkdownArbejdskopi af Codex CLI 0.155.1: eksperimentelt worktree-flag, kildens HEAD, kontrol af den nye mappe, bevaring af resultatet og sikker fjernelse.
Læs hele artiklen
Vigtig pointe
I Codex CLI version 0.155.1 opretter du en separat arbejdskopi til en anden opgave med codex --enable worktrees --worktree. Funktionen er eksperimentel og deaktiveret som standard: Hvis du ikke allerede har aktiveret den, nægter Codex at starte med --worktree uden --enable worktrees. Kopien oprettes fra det oprindelige projekts seneste commit (HEAD), uden ucommittede ændringer, i en detached HEAD-tilstand – uden en navngiven branch tilknyttet.
Du bruger for eksempel Codex CLI til at refaktorere et modul, da en anden opgave dukker op: at skrive tests til et andet modul. Det er risikabelt at åbne en anden session i samme mappe: Det er let at forveksle ændringer fra den første og den anden opgave. Flaget --worktree opretter en separat mappe til det samme projekt til den anden opgave, så den første forbliver urørt.
Praktiske ressourcer til at arbejde med agenter parallelt: Ailoot-dokumentationen.
Hvad --worktree opretter, og hvilke filer der kommer med i kopien
I Git-terminologi er en worktree en ekstra arbejdsmapppe, der er knyttet til det samme repository: Den deler commit-historikken, men har sit eget sæt filer på disken. I Codex CLI 0.155.1 bruger flaget --worktree denne Git-mekanisme til at starte en ny agentsession i en separat mappe, så mappen, hvor den første opgave allerede kører, forbliver urørt.
Den nye arbejdskopi indeholder filerne fra den commit, som det oprindelige projekts HEAD peger på, når kopien startes – den seneste commit, ikke sidste gang du gemte en fil i din editor. Denne kommando overfører ikke ucommittede ændringer eller nye filer. At gemme i editoren er ikke det samme som at committe i Git. Hvis den første mappe stadig indeholder ucommittede ændringer, når du starter den anden opgave, forbliver ændringerne kun i den mappe.
Det er ikke en sikkerhedskopi af hele repositoryt eller en isolering af hele computeren. Det er en ekstra arbejdsmappe til det samme projekt med adgang til den samme branch og commit-historik. Se Claude Code og git worktree: parallelle opgaver for en lignende mekanisme i et andet værktøj.
Forberedelse: version, projekttillid og en commit
Kontrollér tre ting, før du går i gang. Kør kommandoerne fra det oprindelige projekts mappe.
Kontrollér først Codex CLI-versionen. Denne vejledning gælder version 0.155.1; for andre versioner skal du kontrollere flaggenes funktion separat:
codex --version
For det andet skal du have et lokalt Git-projekt, hvis HEAD peger på en eksisterende commit – med andre ord skal repositoryt indeholde mindst én commit. Ellers er der ikke noget at oprette kopien ud fra.
For det tredje skal kilden være betroet: Hvis projektet udtrykkeligt er markeret som en ikke-betroet kilde, mislykkes starten med --worktree, før kopien bliver oprettet. Hvis du er ved at konfigurere Codex CLI, gennemgår Codex (OpenAI): hvad det er, og hvordan du kommer i gang den grundlæggende forberedelse.
Kontrollér på forhånd listen over repositoryts eksisterende worktrees. Du kan sammenligne med den efter starten:
git worktree list
Separate mapper gør det lettere at holde opgaver adskilt. De praktiske ressourcer i Ailoot-dokumentationen er nyttige, hvis du vil have en overordnet tilgang til at arbejde med en agent.
Trin: start en separat kopi til en anden opgave
Aktivér den eksperimentelle funktion, og start en session med en separat kopi
Kør kommandoen fra det oprindelige projekts mappe, hvor du allerede arbejder på den første opgave.
codex --enable worktrees --worktreeForventet resultat: Codex opretter en ny arbejdskopi af projektet fra den aktuelle HEAD og åbner en agentsession dér. Kopien er i detached HEAD-tilstand uden en navngiven branch tilknyttet. Sådan fungerer flaget i version 0.155.1.
Vis worktrees igen i en anden terminal i det oprindelige projekt
git worktree listForventet resultat: Outputtet indeholder en ekstra linje med den nye kopis sti og en markering for detached HEAD (eller en branch, hvis der er en). Listen viser, at Git har registreret kopien, men bekræfter ikke, at agenten har fuldført opgaven. Åbn mappen på den angivne sti, og kontrollér indholdet for at sikre, at filerne er der.
Sådan kontrollerer du resultatet og bevarer dit arbejde
Når den anden opgave i den nye kopi er færdig, skal du gemme og overføre resultatet separat. Kommandoen --worktree fletter ikke ændringer ind i hovedbranchen og overfører ikke automatisk resultatet. Kopien forbliver i detached HEAD-tilstand, så en commit i den opretter ikke i sig selv en ny branch. Hvis du skal bevare disse commits, skal du knytte dem til en branch eller overføre dem til hovedprojektet, før du sletter kopiens mappe.
Slet ikke kopiens mappe, før resultatet er bevaret. At kontrollere, at arbejdsmappen er ren, erstatter ikke bevaringen af de commits, du har brug for: De er muligvis stadig ikke knyttet til nogen branch.
Hvis du arbejder på opgaver i forskellige værktøjer samtidig, bør du på forhånd planlægge, hvordan du undgår, at de forstyrrer hinanden. Claude Code og Codex sammen gennemgår, hvordan du arbejder med to agenter sammen.
Hvis opstarten blev afbrudt: sådan finder du kopien
Opstart med --worktree kan mislykkes af flere årsager:
- Funktionen blev ikke aktiveret på forhånd, og startkommandoen indeholder ikke
--enable worktrees: Codex nægter at starte med flaget--worktree; - Du befinder dig i den forkerte mappe, eller der er ingen commit: Hvis den aktuelle mappe ikke er et Git-repository, eller den endnu ikke indeholder nogen commits, er der ikke noget at oprette kopien ud fra;
- Projektet er udtrykkeligt markeret som en ikke-betroet kilde: Codex nægter at starte en session med
--worktree. Sørg først for, at du har åbnet det rigtige projekt. Skift ikke automatisk projektets tillidsstatus.
Hvis sessionen ikke nåede at oprette forbindelse til den nyoprettede kopi – for eksempel fordi processen blev afbrudt – slettes arbejdsmappen ikke automatisk. Kontrollér først listen over worktrees, og sørg for, at ingen Codex CLI-session stadig bruger kopien, før du sletter noget:
git worktree list
Åbn mappen, og gem de ændringer, du skal bruge, før du sletter den. Kopien kan stadig eksistere, selvom agentsessionen ikke nåede at starte. Hvis kopien findes, ikke længere er nødvendig og med sikkerhed ikke bruges af nogen session, kan du fjerne den manuelt fra det oprindelige repository med git worktree remove og angive mappens sti. Tilføj ikke --force: Hvis kopien indeholder ucommittede eller usporede filer, nægter kommandoen at slette den. Hvis den nægter, skal du kontrollere mappens indhold uden at slå sikkerhedsforanstaltningen fra.
Når du opdaterer Codex CLI, skal du kontrollere codex --version igen og gentage kontrollen med git worktree list: Eksperimentelle flag kan fungere forskelligt på tværs af versioner.
Flere ressourcer og værktøjer: Ailoot.
Flere oplysninger
Spørgsmål og svar
Medtager andet worktree mine ugemte ændringer eller ændringer uden commit?
Nej. I den beskrevne CLI-version starter det fra kilderepositoryets HEAD-commit. Ændringer uden commit og nye filer bliver i originalmappen, så lagring i editoren er ikke nok til overførsel.
Er et rent detached worktree sikkert at slette?
En ren mappe kan stadig indeholde commits uden en navngiven gren. Bevar eller overfør dem først, kontrollér, at ingen session bruger worktreeet, og brug derefter almindelig Git-worktreefjernelse uden at gennemtvinge forbi beskyttelser.