Ιστολόγιο

Codex worktree: ένα ξεχωριστό αντίγραφο εργασίας για δεύτερη εργασία

Markdown

Αντίγραφο εργασίας του Codex CLI 0.155.1: πειραματική σημαία worktree, πηγαίο HEAD, έλεγχος του νέου φακέλου, διατήρηση του αποτελέσματος και ασφαλής αφαίρεση.

Διαβάστε ολόκληρο το άρθρο

Κύριο συμπέρασμα

Στην έκδοση 0.155.1 του Codex CLI, δημιουργείτε ένα ξεχωριστό αντίγραφο εργασίας για μια δεύτερη εργασία με το codex --enable worktrees --worktree. Η δυνατότητα είναι πειραματική και απενεργοποιημένη από προεπιλογή: αν δεν την έχετε ήδη ενεργοποιήσει, το Codex θα αρνηθεί να ξεκινήσει με το --worktree χωρίς το --enable worktrees. Το αντίγραφο δημιουργείται από την πιο πρόσφατη υποβολή (HEAD) του αρχικού έργου, χωρίς μη υποβληθείσες αλλαγές, σε κατάσταση detached HEAD—χωρίς συνδεδεμένο επώνυμο κλάδο.

Για παράδειγμα, χρησιμοποιείτε το Codex CLI για να αναδιαρθρώσετε μία ενότητα όταν προκύπτει μια δεύτερη εργασία: να γράψετε δοκιμές για μια άλλη ενότητα. Το άνοιγμα μιας δεύτερης συνεδρίας στον ίδιο φάκελο είναι επισφαλές: είναι εύκολο να μπερδέψετε τις αλλαγές της πρώτης και της δεύτερης εργασίας. Η σημαία --worktree δημιουργεί έναν ξεχωριστό φάκελο του ίδιου έργου για τη δεύτερη εργασία, αφήνοντας την πρώτη ανέπαφη.

Πρακτικοί πόροι για παράλληλη εργασία με πράκτορες: τεκμηρίωση του Ailoot.

Τι δημιουργεί το --worktree και ποια αρχεία περιλαμβάνονται στο αντίγραφο

Στην ορολογία του Git, ένα worktree είναι ένας πρόσθετος φάκελος εργασίας συνδεδεμένος με το ίδιο αποθετήριο: μοιράζεται το ιστορικό υποβολών, αλλά έχει το δικό του σύνολο αρχείων στον δίσκο. Στο Codex CLI 0.155.1, η σημαία --worktree χρησιμοποιεί αυτόν τον μηχανισμό του Git για να ξεκινήσει μια νέα συνεδρία πράκτορα σε ξεχωριστό φάκελο, αφήνοντας ανέπαφο τον φάκελο όπου εκτελείται ήδη η πρώτη εργασία.

Το νέο αντίγραφο εργασίας περιέχει τα αρχεία της υποβολής στην οποία δείχνει το HEAD του αρχικού έργου κατά την εκκίνηση—την πιο πρόσφατη υποβολή, όχι την τελευταία φορά που αποθηκεύσατε ένα αρχείο στον επεξεργαστή σας. Αυτή η εντολή δεν μεταφέρει μη υποβληθείσες αλλαγές ή νέα αρχεία. Η αποθήκευση στον επεξεργαστή σας δεν είναι το ίδιο με την υποβολή στο Git. Αν ο πρώτος φάκελος εξακολουθεί να περιέχει μη υποβληθείσες αλλαγές όταν ξεκινήσετε τη δεύτερη εργασία, αυτές οι αλλαγές θα παραμείνουν μόνο σε εκείνον τον φάκελο.

Αυτό δεν αποτελεί αντίγραφο ασφαλείας ολόκληρου του αποθετηρίου ούτε απομόνωση ολόκληρου του υπολογιστή. Είναι ένας δεύτερος φάκελος εργασίας του ίδιου έργου, με πρόσβαση στον ίδιο κλάδο και στο ίδιο ιστορικό υποβολών. Για έναν παρόμοιο μηχανισμό σε άλλο εργαλείο, δείτε το Claude Code και git worktree: παράλληλες εργασίες.

Προετοιμασία: έκδοση, εμπιστοσύνη έργου και υποβολή

Ελέγξτε τρία πράγματα πριν ξεκινήσετε. Εκτελέστε τις εντολές από τον φάκελο του αρχικού έργου.

Πρώτον, ελέγξτε την έκδοση του Codex CLI. Αυτές οι οδηγίες ισχύουν για την έκδοση 0.155.1· για άλλες εκδόσεις, ελέγξτε ξεχωριστά τη συμπεριφορά των σημαιών:

codex --version

Δεύτερον, χρειάζεστε ένα τοπικό έργο Git του οποίου το HEAD δείχνει σε μια υπάρχουσα υποβολή—με άλλα λόγια, το αποθετήριο πρέπει να περιέχει τουλάχιστον μία υποβολή. Διαφορετικά, δεν υπάρχει κάτι από το οποίο να δημιουργηθεί το αντίγραφο.

Τρίτον, η πηγή πρέπει να είναι έμπιστη: αν το έργο έχει επισημανθεί ρητά ως μη έμπιστο, η εκκίνηση με το --worktree θα αποτύχει πριν δημιουργηθεί το αντίγραφο. Αν μόλις ρυθμίζετε το Codex CLI, η βασική προετοιμασία καλύπτεται στο Codex (OpenAI): τι είναι και πώς να ξεκινήσετε.

Ελέγξτε εκ των προτέρων τη λίστα των υπαρχόντων worktree αυτού του αποθετηρίου. Μπορείτε να τη χρησιμοποιήσετε για σύγκριση μετά την εκκίνηση:

git worktree list

Οι ξεχωριστοί φάκελοι βοηθούν να κρατάτε τις εργασίες χωριστά. Για μια συνολική προσέγγιση της συνεργασίας με έναν πράκτορα, είναι χρήσιμοι οι πρακτικοί πόροι στην τεκμηρίωση του Ailoot.

Βήματα: ξεκινήστε ένα ξεχωριστό αντίγραφο για δεύτερη εργασία

  1. Ενεργοποιήστε την πειραματική δυνατότητα και ξεκινήστε μια συνεδρία με ξεχωριστό αντίγραφο

    Εκτελέστε την εντολή από τον φάκελο του αρχικού έργου, όπου εργάζεστε ήδη στην πρώτη εργασία.

    codex --enable worktrees --worktree
    

    Αναμενόμενο αποτέλεσμα: το Codex δημιουργεί ένα νέο αντίγραφο εργασίας του έργου από το τρέχον HEAD και ανοίγει εκεί μια συνεδρία πράκτορα. Το αντίγραφο βρίσκεται σε κατάσταση detached HEAD, χωρίς συνδεδεμένο επώνυμο κλάδο. Έτσι λειτουργεί η σημαία στην έκδοση 0.155.1.

  2. Εμφανίστε ξανά τα worktree σε ένα άλλο τερματικό, μέσα στο αρχικό έργο

    git worktree list
    

    Αναμενόμενο αποτέλεσμα: η έξοδος περιέχει μία επιπλέον γραμμή με τη διαδρομή του νέου αντιγράφου και μια ένδειξη detached HEAD (ή έναν κλάδο, αν υπάρχει). Αυτή η λίστα δείχνει ότι το Git έχει καταχωρίσει το αντίγραφο, αλλά δεν επιβεβαιώνει ότι ο πράκτορας ολοκλήρωσε την εργασία. Για να βεβαιωθείτε ότι υπάρχουν τα αρχεία, ανοίξτε τον φάκελο στη διαδρομή που εμφανίζεται και ελέγξτε τα περιεχόμενά του.

Πώς να ελέγξετε το αποτέλεσμα και να διατηρήσετε την εργασία σας

Μόλις ολοκληρωθεί η δεύτερη εργασία στο νέο αντίγραφο, πρέπει να αποθηκεύσετε και να μεταφέρετε το αποτέλεσμα ξεχωριστά. Η εντολή --worktree δεν συγχωνεύει τις αλλαγές στον κύριο κλάδο ούτε μεταφέρει αυτόματα το αποτέλεσμα. Το αντίγραφο παραμένει σε κατάσταση detached HEAD, επομένως η δημιουργία μιας υποβολής μέσα σε αυτό δεν δημιουργεί από μόνη της νέο κλάδο. Αν χρειάζεται να διατηρήσετε αυτές τις υποβολές, συνδέστε τις με έναν κλάδο ή μεταφέρετέ τις στο κύριο έργο πριν διαγράψετε τον φάκελο του αντιγράφου.

Μη διαγράψετε τον φάκελο του αντιγράφου πριν διατηρήσετε το αποτέλεσμα. Το να ελέγξετε ότι ο φάκελος εργασίας είναι καθαρός δεν υποκαθιστά τη διατήρηση των υποβολών που χρειάζεστε: μπορεί να μην έχουν συνδεδεμένο κλάδο.

Αν εργάζεστε ταυτόχρονα σε εργασίες με διαφορετικά εργαλεία, σχεδιάστε εκ των προτέρων πώς θα αποτρέψετε την αλληλοπαρεμβολή τους. Η συνεργασία δύο πρακτόρων καλύπτεται στο Claude Code και Codex μαζί.

Αν διακόπηκε η εκκίνηση: πού θα βρείτε το αντίγραφο

Η εκκίνηση με το --worktree μπορεί να αποτύχει για διάφορους λόγους:

  • η δυνατότητα δεν είχε ενεργοποιηθεί προηγουμένως και η εντολή εκκίνησης δεν περιλαμβάνει το --enable worktrees: το Codex θα αρνηθεί να ξεκινήσει με τη σημαία --worktree·
  • βρίσκεστε σε λάθος φάκελο ή δεν υπάρχει υποβολή: αν ο τρέχων φάκελος δεν είναι αποθετήριο Git ή δεν περιέχει ακόμη υποβολές, δεν υπάρχει κάτι από το οποίο να δημιουργηθεί το αντίγραφο·
  • το έργο έχει επισημανθεί ρητά ως μη έμπιστη πηγή: το Codex θα αρνηθεί να ξεκινήσει συνεδρία με το --worktree. Πρώτα βεβαιωθείτε ότι ανοίξατε το σωστό έργο. Μην αλλάξετε αυτόματα την κατάσταση εμπιστοσύνης του.

Αν η συνεδρία δεν κατάφερε να συνδεθεί με το νεοδημιουργημένο αντίγραφο—για παράδειγμα, επειδή διακόπηκε η διεργασία—ο φάκελος εργασίας δεν διαγράφεται αυτόματα. Πρώτα ελέγξτε τη λίστα των worktree και, πριν διαγράψετε οτιδήποτε, βεβαιωθείτε ότι καμία συνεδρία Codex CLI δεν χρησιμοποιεί ακόμη αυτό το αντίγραφο:

git worktree list

Ανοίξτε τον φάκελο και αποθηκεύστε όποιες αλλαγές χρειάζεστε πριν τον διαγράψετε. Το αντίγραφο μπορεί να παραμείνει ακόμη κι αν δεν ολοκληρώθηκε η εκκίνηση της συνεδρίας του πράκτορα. Αν το αντίγραφο υπάρχει, δεν χρειάζεται πλέον και είναι βέβαιο ότι δεν χρησιμοποιείται από καμία συνεδρία, αφαιρέστε το χειροκίνητα με το git worktree remove από το αρχικό αποθετήριο, καθορίζοντας τη διαδρομή του φακέλου. Μην προσθέσετε το --force: αν το αντίγραφο περιέχει μη υποβληθέντα ή μη παρακολουθούμενα αρχεία, η εντολή θα αρνηθεί να το διαγράψει. Αν αρνηθεί, ελέγξτε τα περιεχόμενα του φακέλου χωρίς να απενεργοποιήσετε την προστασία.

Όταν ενημερώνετε το Codex CLI, ελέγξτε ξανά το codex --version και επαναλάβετε τον έλεγχο με το git worktree list: οι πειραματικές σημαίες μπορεί να συμπεριφέρονται διαφορετικά μεταξύ εκδόσεων.

Περισσότεροι πόροι και εργαλεία: Ailoot.

Περισσότερες λεπτομέρειες

Ερωτήσεις και απαντήσεις: Codex worktree: ένα ξεχωριστό αντίγραφο εργασίας για δεύτερη εργασία | Ailoot

Το δεύτερο worktree περιλαμβάνει μη αποθηκευμένες αλλαγές ή αλλαγές χωρίς commit;

Όχι. Στην περιγραφόμενη έκδοση CLI ξεκινά από το HEAD commit του αρχικού αποθετηρίου. Αλλαγές χωρίς commit και νέα αρχεία μένουν στον αρχικό φάκελο, οπότε η αποθήκευση αρχείου στον επεξεργαστή δεν αρκεί για μεταφορά.

Ένα καθαρό detached worktree διαγράφεται με ασφάλεια;

Καθαρός φάκελος μπορεί ακόμη να περιέχει commits χωρίς ονομασμένο κλάδο. Διασώστε ή μεταφέρετε πρώτα εκείνα τα commits, ελέγξτε ότι καμία συνεδρία δεν χρησιμοποιεί το worktree και χρησιμοποιήστε συνηθισμένη αφαίρεση Git worktree χωρίς παράκαμψη δικλείδων.

Όλα τα άρθρα