Blog

Codex worktree: ločena delovna kopija za drugo opravilo

Markdown

Delovna kopija Codex CLI 0.155.1: eksperimentalna zastavica worktree, izvorni HEAD, preverjanje nove mape, ohranitev rezultata in varna odstranitev.

Preberi celoten članek

Ključna ugotovitev

V različici Codex CLI 0.155.1 ustvarite ločeno delovno kopijo za drugo opravilo z ukazom codex --enable worktrees --worktree. Funkcija je eksperimentalna in je privzeto onemogočena: če je še niste omogočili, se Codex brez --enable worktrees ne bo zagnal z zastavico --worktree. Kopija je ustvarjena iz najnovejše objave (HEAD) izvirnega projekta, brez neobjavljenih sprememb, v stanju detached HEAD — brez pripetega poimenovanega brana.

Recimo, da v Codex CLI preurejate en modul, ko se pojavi drugo opravilo: pisanje testov za drug modul. Odprtje druge seje v isti mapi je tvegano, saj lahko hitro pomešate spremembe prvega in drugega opravila. Zastavica --worktree za drugo opravilo ustvari ločeno mapo istega projekta, prva mapa pa ostane nedotaknjena.

Praktični viri za vzporedno delo z agenti: dokumentacija Ailoot.

Kaj ustvari --worktree in katere datoteke so v kopiji

V Gitovi terminologiji je worktree dodatna delovna mapa, povezana z istim repozitorijem: deli zgodovino objav, vendar ima svoj nabor datotek na disku. V Codex CLI 0.155.1 zastavica --worktree uporablja ta Gitov mehanizem, da zažene novo agentsko sejo v ločeni mapi, mapa, v kateri že poteka prvo opravilo, pa ostane nedotaknjena.

Nova delovna kopija vsebuje datoteke iz objave, na katero kaže HEAD izvirnega projekta ob zagonu — torej iz najnovejše objave, ne iz stanja ob zadnjem shranjevanju datoteke v urejevalniku. Ta ukaz ne prenese neobjavljenih sprememb ali novih datotek. Shranjevanje v urejevalniku ni isto kot objava v Gitu. Če so v prvi mapi ob zagonu drugega opravila še neobjavljene spremembe, bodo ostale samo v tej mapi.

To ni varnostna kopija celotnega repozitorija ali izolacija celotnega računalnika. Gre za drugo delovno mapo istega projekta z dostopom do istega brana in zgodovine objav. O podobnem mehanizmu v drugem orodju preberite v članku Claude Code in git worktree: vzporedna opravila.

Priprava: različica, zaupanje v projekt in objava

Pred začetkom preverite tri stvari. Ukaze zaženite iz mape izvirnega projekta.

Najprej preverite različico Codex CLI. Ta navodila veljajo za različico 0.155.1; pri drugih različicah posebej preverite delovanje zastavic:

codex --version

Drugič, potrebujete lokalni projekt Git, katerega HEAD kaže na obstoječo objavo — z drugimi besedami, repozitorij mora vsebovati vsaj eno objavo. Sicer ni ničesar, iz česar bi lahko ustvarili kopijo.

Tretjič, vir mora biti zaupanja vreden: če je projekt izrecno označen kot nezaupanja vreden, zagon z --worktree ne bo uspel, še preden bo kopija ustvarjena. Če Codex CLI šele nastavljate, so osnovne priprave opisane v članku Codex (OpenAI): kaj je in kako začeti.

Vnaprej preverite seznam obstoječih delovnih kopij tega repozitorija. Po zagonu ga lahko uporabite za primerjavo:

git worktree list

Ločene mape pomagajo ohranjati opravila ločena. Za splošni pristop k delu z agentom so uporabni praktični viri v dokumentaciji Ailoot.

Koraki: zagon ločene kopije za drugo opravilo

  1. Omogočite eksperimentalno funkcijo in zaženite sejo z ločeno kopijo

    Ukaz zaženite iz mape izvirnega projekta, v kateri že delate na prvem opravilu.

    codex --enable worktrees --worktree
    

    Pričakovani rezultat: Codex ustvari novo delovno kopijo projekta iz trenutnega HEAD in v njej odpre agentsko sejo. Kopija je v stanju detached HEAD, brez pripetega poimenovanega brana. Tako zastavica deluje v različici 0.155.1.

  2. V drugem terminalu v izvirnem projektu znova prikažite seznam delovnih kopij

    git worktree list
    

    Pričakovani rezultat: izpis vsebuje dodatno vrstico s potjo do nove kopije in oznako detached HEAD (ali branom, če obstaja). Ta seznam kaže, da je Git kopijo registriral, ne potrjuje pa, da je agent dokončal opravilo. Če se želite prepričati, da so datoteke tam, odprite mapo na navedeni poti in preverite njeno vsebino.

Kako preveriti rezultat in ohraniti svoje delo

Ko je drugo opravilo v novi kopiji končano, morate rezultat shraniti in prenesti ločeno. Ukaz --worktree sprememb ne združi v glavni bran in rezultata ne prenese samodejno. Kopija ostane v stanju detached HEAD, zato objava v njej sama po sebi ne ustvari novega brana. Če želite te objave ohraniti, jih pripnite na bran ali prenesite v glavni projekt, preden izbrišete mapo kopije.

Mape kopije ne izbrišite, dokler ne ohranite rezultata. Preverjanje, ali je delovna mapa čista, ne nadomesti ohranitve objav, ki jih potrebujete: morda še vedno niso pripete na noben bran.

Če hkrati delate na opravilih v različnih orodjih, vnaprej načrtujte, kako preprečiti njihovo medsebojno oviranje. Delo z dvema agentoma je opisano v članku Claude Code in Codex skupaj.

Če je bil zagon prekinjen: kje najti kopijo

Zagon z --worktree lahko spodleti iz več razlogov:

  • funkcija prej ni bila omogočena, ukaz za zagon pa ne vključuje --enable worktrees: Codex se ne bo zagnal z zastavico --worktree;
  • ste v napačni mapi ali pa ni nobene objave: če trenutna mapa ni repozitorij Git ali še ne vsebuje nobene objave, ni ničesar, iz česar bi lahko ustvarili kopijo;
  • projekt je izrecno označen kot nezaupanja vreden vir: Codex ne bo zagnal seje z --worktree. Najprej se prepričajte, da ste odprli pravi projekt. Njegovega stanja zaupanja ne spreminjajte samodejno.

Če se seja ni uspela priključiti na novo ustvarjeno kopijo — na primer zato, ker je bil proces prekinjen —, delovna mapa ne bo samodejno izbrisana. Najprej preverite seznam delovnih kopij, pred brisanjem pa se prepričajte, da te kopije ne uporablja nobena seja Codex CLI:

git worktree list

Odprite mapo in pred brisanjem shranite vse spremembe, ki jih potrebujete. Kopija lahko ostane, tudi če se agentska seja ni dokončno zagnala. Če kopija obstaja, je ne potrebujete več in ste prepričani, da je ne uporablja nobena seja, jo ročno odstranite iz izvirnega repozitorija z ukazom git worktree remove ter navedite pot do mape. Ne dodajajte --force: če kopija vsebuje neobjavljene ali nesledene datoteke, bo ukaz brisanje zavrnil. Če ga zavrne, preverite vsebino mape, ne da bi izklopili varovalko.

Pri posodobitvi Codex CLI znova preverite codex --version in ponovite preverjanje z git worktree list: eksperimentalne zastavice se lahko med različicami obnašajo drugače.

Več virov in orodij: Ailoot.

Več podrobnosti

Vprašanja in odgovori: Codex worktree: ločena delovna kopija za drugo opravilo

Ali bo drugo delovno drevo vsebovalo neshranjene ali nepotrjene spremembe?

Ne. V opisani različici CLI začne iz commita HEAD izvornega repozitorija. Nepotrjene spremembe in nove datoteke ostanejo v prvotni mapi, zato samo shranjevanje datoteke v urejevalniku ne zadošča za prenos.

Ali je čisto delovno drevo z ločenim HEAD varno izbrisati?

Tudi čista mapa lahko vsebuje commite brez poimenovane veje. Najprej jih ohranite ali prenesite, preverite, da drevesa ne uporablja nobena seja, nato uporabite običajno odstranjevanje Git worktree brez prisilnega obhoda varoval.

Vsi članki