Ιστολόγιο

Git worktree στο Claude Code: παράλληλες συνεδρίες

Markdown

Πώς να χρησιμοποιήσετε τα --worktree, .worktreeinclude, worktree.baseRef και την απομόνωση υποπρακτόρων. Διαφορές από τα branches, εκκαθάριση των worktrees και συνηθισμένα λάθη.

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

Πρακτικές πληροφορίες για την εργασία με το Ailoot βρίσκονται στην τεκμηρίωση.

Τι είναι το git worktree στο Claude Code

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

Ένα Git worktree είναι ένας ξεχωριστός κατάλογος εργασίας για ένα άλλο branch του ίδιου αποθετηρίου. Η εντολή claude --worktree <name> δημιουργεί αυτόματα ένα worktree στο .claude/worktrees/<name>/ και ξεκινά το Claude Code εκεί. Δύο τερματικά → δύο συνεδρίες → διαφορετικά αρχεία στον δίσκο, χωρίς καμία παρεμβολή. Διαθέσιμο έτοιμο στο Claude Code v2.0+, με δυνατότητα διαμόρφωσης μέσω του .worktreeinclude για μυστικά και του worktree.baseRef για την επιλογή του βασικού branch.

Η εκκίνηση πολλών agents παράλληλα στον ίδιο φάκελο είναι το βασικό πρόβλημα του vibe-coding με την ταχύτητα του 2026. Οι AI agents γράφουν κώδικα πιο γρήγορα απ’ όσο μπορεί ένας άνθρωπος να παρακολουθεί ποιος αλλάζει τι. Χωρίς απομόνωση αρχείων, η εκκίνηση δύο παράλληλων συνεδριών Claude Code στον ίδιο κατάλογο καταλήγει με τη μία συνεδρία να αντικαθιστά τη δουλειά της άλλης.

Το Git worktree λύνει αυτό το πρόβλημα στο επίπεδο του συστήματος αρχείων. Έχετε έναν κύριο κατάλογο όπου εργάζεστε. Η εντολή claude --worktree feature-auth δημιουργεί τον φάκελο .claude/worktrees/feature-auth/ σε ξεχωριστό branch και ξεκινά εκεί το Claude Code. Τα αρχεία είναι απομονωμένα. Οι αλλαγές σε μία συνεδρία δεν είναι ορατές στην άλλη μέχρι να τις συγχωνεύσετε ρητά.

Η επίσημη τεκμηρίωση της Anthropic το διατυπώνει ως εξής:

Όταν κάθε συνεδρία Claude Code εκτελείται στο δικό της worktree, οι επεξεργασίες σε μία συνεδρία δεν επηρεάζουν ποτέ τα αρχεία σε άλλη. Μπορείτε να αναπτύσσετε μια λειτουργία σε ένα τερματικό και να διορθώνετε ένα σφάλμα σε άλλο.

— Anthropic Docs, https://code.claude.com/docs/en/worktrees

Ένα στοιχείο αυτοελέγχου: αν έχετε λάβει ποτέ ένα commit όπου τα μισά αρχεία ήταν δουλειά κάποιου άλλου, χρειάζεστε worktree.

Πώς διαφέρει το git worktree από ένα κανονικό branch

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

Ένα κανονικό git checkout αλλάζει το αντίγραφο εργασίας στον ίδιο φάκελο—τα παλιά αρχεία εξαφανίζονται από τον δίσκο μέχρι να επιστρέψετε στο branch. Η εντολή git worktree add δημιουργεί έναν δεύτερο φάκελο για ένα άλλο branch, δίπλα στον πρώτο. Και τα δύο branch βρίσκονται ταυτόχρονα στον δίσκο· μετακινείστε ανάμεσά τους με ένα απλό cd. Στο παρασκήνιο υπάρχει ένα αποθετήριο .git, με κοινό ιστορικό και κοινό remote. Απλώς, πολλά αντίγραφα εργασίας.

Η τυπική ροή εργασίας Git: βρίσκεστε στο branch main και εκτελείτε git checkout feature-x—το Git αντικαθιστά τα αρχεία του αντιγράφου εργασίας. Μια διεργασία npm run dev που εκτελείται χαλάει επειδή το package.json άλλαξε κάτω από αυτήν. Αποθηκεύετε προσωρινά τις μη δεσμευμένες αλλαγές σας και περιμένετε να κάνει ξανά ευρετηρίαση το IDE. Επιστρέφετε και όλα αντικαθίστανται ξανά, οπότε πρέπει να κάνετε πάλι stash και pop.

Το Git worktree σάς δίνει άλλη επιλογή: αντί να αλλάζετε branch σε έναν φάκελο, δημιουργείτε έναν δεύτερο φάκελο για ένα άλλο branch. Η εντολή git worktree add ../project-feature-x feature-x δημιουργεί τον κατάλογο ../project-feature-x/ με τα αρχεία από το branch feature-x. Το main σας παραμένει στον αρχικό φάκελο και ο dev server συνεχίζει να εκτελείται.

ΠαράμετροςBranch git checkoutgit worktree add
Αρχεία αντιγράφου εργασίαςΑντικαθίστανταιΕμφανίζονται σε νέο φάκελο
Παράλληλη εργασία σε δύο branchΌχιΝαι
Μη δεσμευμένες αλλαγέςΧρειάζεται git stashΔεν χρειάζεται να κάνετε κάτι
Ταχύτητα εναλλαγήςΕξαρτάται από το μέγεθος της διαφοράςΑπλώς cd
Χώρος στον δίσκο1×N× (ένα αντίγραφο των αρχείων ανά branch)

Παλαιότερα, η λειτουργία worktree στο Claude Code έπρεπε να ρυθμιστεί χειροκίνητα: git worktree add, μετά cd, έπειτα claude—και επανάληψη σε κάθε τερματικό. Η σημαία --worktree (επίσης -w) τα κάνει και τα τρία με μία εντολή.

Εκκίνηση της πρώτης παράλληλης συνεδρίας: η σημαία --worktree

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

Η εντολή claude --worktree feature-auth δημιουργεί ένα worktree στο .claude/worktrees/feature-auth/, δημιουργεί το branch worktree-feature-auth από το origin/HEAD και ξεκινά το Claude Code ακριβώς εκεί. Χωρίς χειροκίνητο git worktree add ή cd. Στο διπλανό τερματικό, επαναλάβετε με διαφορετικό όνομα για να έχετε δύο ανεξάρτητες συνεδρίες. Αν παραλείψετε το όνομα (claude --worktree), το Claude δημιουργεί ένα τυχαίο, όπως bright-running-fox.

Ελάχιστο παράδειγμα. Ανοίξτε το πρώτο τερματικό στη ρίζα του έργου:

claude --worktree feature-auth

Το Claude Code κάνει τρία πράγματα:

  1. Δημιουργεί το .claude/worktrees/feature-auth/ με ένα στιγμιότυπο του origin/HEAD (συνήθως το προεπιλεγμένο branch σας).
  2. Δημιουργεί ένα νέο branch worktree-feature-auth.
  3. Ξεκινά τη συνεδρία σε αυτόν τον φάκελο.

Ανοίξτε ένα δεύτερο τερματικό στον ίδιο φάκελο ρίζας του αποθετηρίου:

claude --worktree bugfix-123

Έτοιμο. Δύο συνεδρίες Claude Code, διαφορετικά αρχεία στον δίσκο, διαφορετικά branch του Git. Αν γράφετε κώδικα αυθεντικοποίησης στην πρώτη και διορθώνετε ένα αποτυχημένο test στη δεύτερη, δεν μπορούν φυσικά να μπουν η μία στον δρόμο της άλλης.

Αν δεν θέλετε να πληκτρολογήσετε όνομα, το Claude θα επινοήσει ένα:

claude --worktree
# → δημιουργεί κάτι σαν .claude/worktrees/bright-running-fox/

Συμβουλή για αρχάριους στο Git: προσθέστε το .claude/worktrees/ στο .gitignore. Διαφορετικά, όταν εκτελείτε git status στον κύριο φάκελο, θα βλέπετε τα περιεχόμενα όλων των worktrees ως μη παρακολουθούμενα αρχεία:

# .gitignore
.claude/worktrees/

Παγίδα που πρέπει να αποφύγετε: πριν από την πρώτη εκκίνηση με --worktree σε νέο κατάλογο, μπείτε σε αυτόν με ένα κανονικό claude (χωρίς τη σημαία) και αποδεχτείτε το παράθυρο διαλόγου εμπιστοσύνης χώρου εργασίας. Αν δεν το κάνετε, η σημαία αποτυγχάνει με σφάλμα “trust not accepted”—και όταν τη συνδυάζετε με -p για headless λειτουργία.

Πού βρίσκονται τα worktrees και πώς να τα εντοπίσετε

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

Από προεπιλογή, όλα τα worktrees βρίσκονται στο .claude/worktrees/<name>/ δίπλα στη ρίζα του αποθετηρίου σας. Για να δείτε τη λίστα, εκτελέστε git worktree list. Για να μεταβείτε χειροκίνητα σε ένα worktree, χρησιμοποιήστε cd .claude/worktrees/feature-auth. Για εναλλαγή μέσα σε μια συνεδρία Claude, ζητήστε του «switch to another worktree»· χρησιμοποιεί το ενσωματωμένο εργαλείο EnterWorktree. Το παλιό worktree παραμένει ανέπαφο στον δίσκο.

Η προεπιλεγμένη τοποθεσία είναι σταθερή: .claude/worktrees/<value>/ στη ρίζα του αποθετηρίου. Αν το έργο σας βρίσκεται στο ~/dev/my-app/, το worktree feature-auth θα βρίσκεται στο ~/dev/my-app/.claude/worktrees/feature-auth/.

Για μη τυπικές διατάξεις (για παράδειγμα, αν θέλετε το worktree έξω από το αποθετήριο), υπάρχει το hook WorktreeCreate—περισσότερα παρακάτω στην ενότητα για SVN και Mercurial.

Μέσα σε μία συνεδρία Claude, μπορείτε να μεταβείτε σε άλλο υπάρχον worktree. Απλώς πείτε στη συνομιλία: «switch to .claude/worktrees/bugfix-123» και το Claude θα καλέσει το εργαλείο EnterWorktree. Ο τρέχων φάκελος θα παραμείνει ανέπαφος—μπορείτε να επιστρέψετε με τον ίδιο τρόπο.

Η τυπική εντολή Git εμφανίζει λίστα με όλα τα worktrees, συμπεριλαμβανομένου του κύριου και όσων δημιουργήθηκαν χειροκίνητα:

git worktree list

Το αποτέλεσμα θα μοιάζει με αυτό:

/home/user/dev/my-app                  abc1234 [main]
/home/user/dev/my-app/.claude/worktrees/feature-auth  def5678 [worktree-feature-auth]
/home/user/dev/my-app/.claude/worktrees/bugfix-123    9876fed [worktree-bugfix-123]

Αντιγραφή των .env και μυστικών: το αρχείο .worktreeinclude

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

Ένα worktree είναι ένα νέο checkout. Αρχεία από το .gitignore (.env, .env.local, τοπικές ρυθμίσεις) απουσιάζουν από τον νέο φάκελο. Χωρίς αυτά, τα npm run dev ή prisma db push δεν θα εκτελεστούν. Το αρχείο .worktreeinclude στη ρίζα του έργου χρησιμοποιεί τη σύνταξη του .gitignore και λέει στο Claude Code ποια αρχεία πρέπει να αντιγράφει αυτόματα σε κάθε νέο worktree. Εφαρμόζεται στο --worktree, στα worktrees υποπρακτόρων και στις συνεδρίες της εφαρμογής για υπολογιστή.

Όταν το --worktree δημιουργεί νέο φάκελο, αυτός περιέχει μόνο ό,τι έχει γίνει commit στο Git. Το .env με τα κλειδιά API και το .env.local με τις τοπικές ρυθμίσεις βρίσκονται στο .gitignore, επομένως δεν υπάρχουν στο worktree. Έτσι, το πρώτο npm run dev αποτυγχάνει με “MISSING DATABASE_URL.”

Η αυτοσχέδια λύση είναι να αντιγράφετε χειροκίνητα το .env μετά από κάθε --worktree. Λειτουργεί μία φορά και μετά το ξεχνάτε. Η λύση της Anthropic είναι ένα αρχείο .worktreeinclude στη ρίζα του έργου, το οποίο απαριθμεί τα αρχεία που αγνοεί το Git και πρέπει να αντιγράφονται αυτόματα σε κάθε νέο worktree.

Δημιουργήστε ένα αρχείο .worktreeinclude στη ρίζα του αποθετηρίου:

.env
.env.local
config/secrets.json

Η σύνταξη είναι ίδια με του .gitignore. Μπορείτε να χρησιμοποιήσετε μοτίβα glob:

.env*
*.local
config/*.json
.vscode/settings.json

Η Anthropic δίνει έναν σαφή κανόνα για την αποφυγή ατυχημάτων:

Το αρχείο χρησιμοποιεί τη σύνταξη gitignore. Αντιγράφονται μόνο αρχεία που ταιριάζουν στο μοτίβο και παράλληλα αγνοούνται από το Git. Αρχεία που παρακολουθούνται από το Git δεν αντιγράφονται ποτέ.

— Anthropic Docs, https://code.claude.com/docs/en/worktrees

Με άλλα λόγια, δεν μπορείτε να αντιγράψετε κατά λάθος το package.json μέσω του .worktreeinclude—δεν βρίσκεται στο .gitignore. Είναι ασφαλές να βάλετε εκεί οποιαδήποτε μοτίβα.

Το ίδιο .worktreeinclude λειτουργεί σε τρεις τρόπους: χειροκίνητο --worktree, αυτόματα worktrees για υποπράκτορες (δείτε παρακάτω) και συνεδρίες από την εφαρμογή Claude για υπολογιστή.

Worktree από pull request για ανασκόπηση κώδικα

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

Η εντολή claude --worktree "#1234" κάνει fetch το pull request #1234 από το origin και δημιουργεί ένα worktree στο .claude/worktrees/pr-1234/ με το branch του PR. Μπορείτε να περάσετε ολόκληρο το URL—claude --worktree https://github.com/OWNER/REPO/pull/1234. Χρήσιμο για ανασκόπηση κώδικα: ανοίξτε το PR στον δικό του φάκελο και το Claude μπορεί να εκτελέσει tests, να διαβάσει αρχεία καταγραφής και να γράψει ένα σχόλιο, ενώ το κύριο αποθετήριο παραμένει ανέγγιχτο.

Ένα τυπικό σενάριο ανασκόπησης κώδικα: ένας συνάδελφος έστειλε ένα PR· πρέπει να επιθεωρήσετε τον κώδικα, να εκτελέσετε tests και να αφήσετε ένα σχόλιο. Με ένα κανονικό git checkout pull/1234/head, αλλάζετε ξανά το αντίγραφο εργασίας και διακόπτετε την ενεργή συνεδρία σας.

Με τη σημαία --worktree, αυτό γίνεται με μία εντολή:

claude --worktree "#1234"

Τι συμβαίνει: το Claude Code εκτελεί git fetch origin pull/1234/head, δημιουργεί ένα worktree στο .claude/worktrees/pr-1234/ και κάνει checkout το branch του PR. Ξεκινά η συνεδρία. Μπορείτε αμέσως να του ζητήσετε «διάβασε το diff, εκτέλεσε τα tests και εντόπισε λογικά σφάλματα»—ενώ το Claude εργάζεται, η κύρια συνεδρία σας στο main συνεχίζει.

Η εναλλακτική σύνταξη είναι το πλήρες URL του pull request:

claude --worktree https://github.com/OWNER/REPO/pull/1234

Χρήση σε πραγματικό έργο: ο συνδυασμός του claude --worktree "#N" με τον δικό σας υποπράκτορα ανασκόπησης κώδικα σάς προσφέρει αυτόματη ανασκόπηση σε ένα ή δύο λεπτά. Εκκινήστε τον στο παρασκήνιο, συνεχίστε τη δουλειά σας στο κύριο παράθυρο και επιστρέψτε στο αποτέλεσμα μέσω του claude agents.

Βασικό branch: worktree.baseRef για fresh ή head

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

Από προεπιλογή, ένα worktree δημιουργεί branch από το origin/HEAD—το πιο πρόσφατο συγχρονισμένο commit από το remote. Αυτή είναι μια ασφαλής, «καθαρή» αφετηρία. Αν θέλετε το worktree να περιλαμβάνει τοπικά commits που δεν προωθήθηκαν, ορίστε worktree.baseRef: "head" στις ρυθμίσεις. Το HEAD προσδιορίζει commit· tracked αλλαγές χωρίς commit παραμένουν στο αρχικό αντίγραφο εργασίας και χρειάζονται χωριστή, ρητή μεταφορά. Χρήσιμο όταν ένας υποπράκτορας πρέπει να εργαστεί πάνω στην τρέχουσα λειτουργία σας χωρίς να μεταβείτε στο main. Δέχεται μόνο fresh ή head· αυθαίρετες αναφορές δεν υποστηρίζονται.

Η προεπιλεγμένη ρύθμιση είναι η εξής: κάθε νέο worktree ξεκινά από το origin/HEAD. Το πλεονέκτημα είναι μια καθαρή αφετηρία που είναι βέβαιο ότι αντιστοιχεί σε αυτό που θα δει το CI. Το μειονέκτημα είναι ότι, αν έχετε μη δεσμευμένες αλλαγές ή αρκετά τοπικά commits πέρα από το remote στον τρέχοντα κλάδο σας, δεν θα συμπεριληφθούν στο νέο worktree.

Για εκκίνηση worktree από το τρέχον τοπικό HEAD commit, προσθέστε αυτό στο .claude/settings.json (ή στις καθολικές ρυθμίσεις):

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

Τώρα το claude --worktree experimental-feature ξεκινά από το τρέχον τοπικό HEAD. Χρησιμεύει όταν η λειτουργία έχει ήδη τοπικά commits που δεν προωθήθηκαν. Δεν περιλαμβάνει tracked αλλαγές που παραμένουν χωρίς commit. Αν τις χρειάζεται ο subagent, διασώστε και μεταφέρετέ τες ρητά και εξετάστε το diff προορισμού· μη συγχέετε τη μεταφορά με .worktreeinclude, που χειρίζεται ignored τοπικά αρχεία.

Η ρύθμιση δέχεται ακριβώς δύο τιμές: "fresh" (= origin/HEAD) και "head" (= τοπικό HEAD). Δεν δέχεται αυθαίρετες αναφορές όπως "feature-branch" ή ένα hash commit—αυτός είναι σκόπιμος περιορισμός για να αποφευχθεί ο συνδυαστικός πολλαπλασιασμός επιλογών.

Αυτόματη απομόνωση υποπρακτόρων: isolation: worktree

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

Ένας υποπράκτορας στο Claude Code είναι ένας εξειδικευμένος agent που εκτελεί μία εργασία (ανασκόπηση κώδικα, αναπαραγοντοποίηση, έρευνα). Αν εκκινήσετε πολλούς υποπράκτορες παράλληλα από μία συνεδρία, εργάζονται στον ίδιο φάκελο από προεπιλογή και μπορούν να αντικαταστήσουν ο ένας τα αρχεία του άλλου. Προσθέστε isolation: worktree στο frontmatter του υποπράκτορα για να δώσετε στον καθένα ένα προσωρινό worktree, το οποίο αφαιρείται καθαρά στο τέλος αν δεν έχει κάνει commit.

Όταν λέτε στο Claude «εκκίνησε τρεις υποπράκτορες: ο ένας διαβάζει τη βάση δεδομένων, ο δεύτερος εξετάζει το API και ο τρίτος ελέγχει τα tests», και οι τρεις εργάζονται στο αντίγραφο εργασίας σας από προεπιλογή. Αν έστω δύο από αυτούς γράφουν ταυτόχρονα στο ίδιο αρχείο, υπάρχει σύγκρουση. Η λύση είναι να δώσετε αυτόματα στον καθένα το δικό του worktree.

Μέθοδος 1: ζητήστε το προφορικά. Γράψτε στο Claude στη συνομιλία:

Χρησιμοποίησε worktrees για τους agents σου.

Το Claude θα εφαρμόσει την απομόνωση σε όλους τους επόμενους υποπράκτορες αυτής της συνεδρίας.

Μέθοδος 2: ορίστε το ρητά στον ίδιο τον υποπράκτορα. Στο αρχείο του υποπράκτορα (για παράδειγμα, .claude/agents/code-reviewer.md), προσθέστε ένα πεδίο στο frontmatter:

---
name: code-reviewer
description: Reads the diff and writes code review comments
isolation: worktree
---

Είσαι ένας σχολαστικός αξιολογητής. Διάβασε το diff και αναζήτησε λογικά σφάλματα...

Τώρα κάθε εκκίνηση αυτού του υποπράκτορα αποκτά ένα προσωρινό worktree στο .claude/worktrees/. Αν ο υποπράκτορας δεν έγραψε τίποτα, ο φάκελος διαγράφεται αυτόματα μόλις ολοκληρώσει. Αν υπάρχουν μη δεσμευμένες αλλαγές, το Claude θα ρωτήσει αν θέλετε να τις διατηρήσετε ή να τις αφαιρέσετε.

Το βασικό branch για τα worktrees των υποπρακτόρων είναι το ίδιο με του --worktree: από προεπιλογή, origin/HEAD· με το worktree.baseRef: head, το τοπικό HEAD.

Πίνακας αποφάσεων: worktree, /bg, subagent ή Agent View

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

Τέσσερις μηχανισμοί του Claude Code που συχνά συγχέονται. Το worktree είναι απομόνωση αρχείων (δίσκος). Το /bg είναι συνεδρία παρασκηνίου (πλαίσιο και tokens). Ο υποπράκτορας είναι εξειδικευμένος agent μίας χρήσης (προτροπή και εργαλεία). Το Agent View είναι πίνακας ελέγχου για όλες τις συνεδρίες (UI). Μπορούν να συνδυαστούν: το /bg δημιουργεί αυτόματα ένα worktree, ένας υποπράκτορας με isolation: worktree ξεκινά σε προσωρινό worktree και το Agent View εμφανίζει και τα τρία ως γραμμές σε μία λίστα.

ΕργαλείοΤι απομονώνειΠότε να το χρησιμοποιήσετε
claude --worktree <name>Αρχεία (ξεχωριστός φάκελος + branch)Θέλετε να διατηρείτε χειροκίνητα N συνεδρίες παράλληλα σε διαφορετικά τερματικά
/bg (ή Ctrl+B)Πλαίσιο και χρόνοΜια μεγάλη εργασία όταν δεν θέλετε να μπλοκάρετε το τρέχον παράθυρο. Στο παρασκήνιο δημιουργείται ένα worktree
Subagent με isolation: worktreeΑρχεία μέσα σε μία συνεδρίαΜία προτροπή αναθέτει εργασία σε N agents και χρειάζεστε προστασία από το να αντικαταστήσουν ο ένας τον άλλον
claude agents (Agent View)Τίποτα, είναι UIΘέλετε να δείτε όλες τις συνεδρίες που εκτελούνται / είναι σε παύση / έχουν ολοκληρωθεί σε έναν πίνακα ελέγχου
/goalΔιαχείριση αυτονομίαςΘέλετε το Claude να εργάζεται μέχρι να εκπληρωθεί μια συνθήκη χωρίς προτροπές από εσάς ανάμεσα στις σειρές

Τυπικοί συνδυασμοί:

  • «2 λειτουργίες παράλληλα, χειροκίνητα» — δύο τερματικά, το καθένα εκτελεί claude --worktree. Η απλούστερη περίπτωση.
  • «Εκκίνησε μια αναπαραγοντοποίηση για όλη τη νύχτα· θα κλείσω την εφαρμογή» — /bg + /goal με συνθήκη ολοκλήρωσης. Η συνεδρία εκτελείται ανεξάρτητα από το παράθυρό σας.
  • «Μία προτροπή, τρεις παράλληλες έρευνες» — τρεις υποπράκτορες με isolation: worktree. Ο καθένας στο δικό του sandbox.
  • «Τι εκτελείται αυτή τη στιγμή;» — claude agents. Ένας πίνακας ελέγχου όλων των συνεδριών με φίλτρα «running», «blocked» και «done».

5 παγίδες κατά τη χρήση worktrees

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

Τα συνηθέστερα προβλήματα: ξεχνάτε το .worktreeinclude και το περιβάλλον δεν λειτουργεί· συγχέετε ένα worktree με κανονικό branch και χάνετε μη δεσμευμένες αλλαγές· διατηρείτε 5+ παράλληλες συνεδρίες και ξεχνάτε πού βρίσκεται τι· δεν ρυθμίζετε το cleanupPeriodDays κι έτσι συσσωρεύονται άχρηστοι φάκελοι· και ξεχνάτε το παράθυρο εμπιστοσύνης σε έναν νέο κατάλογο, με αποτέλεσμα το --worktree να αποτυγχάνει με σφάλμα.

1. Εκκινήσατε worktree, λείπει το .env, τίποτα δεν λειτουργεί. Το συνηθέστερο πρόβλημα. Ένα worktree είναι νέο checkout χωρίς αρχεία που αγνοούνται από το Git. Η λύση είναι να προσθέσετε ένα αρχείο .worktreeinclude με .env* και τις απαραίτητες τοπικές ρυθμίσεις μόλις ρυθμίσετε τη λειτουργία worktree. Βεβαιωθείτε ότι το αρχείο βρίσκεται στη ρίζα του αποθετηρίου και όχι στο .claude/.

2. Θέλετε να μεταβείτε στο κύριο branch, εκτελείτε cd προς τη ρίζα και χάνετε τις μη δεσμευμένες αλλαγές στο worktree. Ο ριζικός φάκελος και το worktree είναι δύο διαφορετικά αντίγραφα εργασίας. Επιστρέψατε με cd· οι αλλαγές στο worktree παρέμειναν στη θέση τους—δεν πήγαν πουθενά. Όμως, αν μπερδευτήκατε και εκτελέσατε git stash στον κύριο φάκελο, νομίζοντας ότι βρισκόσασταν στο worktree, το stash θα δημιουργηθεί στο κύριο branch, όχι σε αυτό που περιμένατε.

3. Εκκινήσατε 5 παράλληλες συνεδρίες και δεν θυμάστε τι κάνει καθεμία. Η τεκμηρίωση της Anthropic προειδοποιεί ρητά ότι οι περισσότεροι προγραμματιστές δεν μπορούν να διαχειριστούν νοητικά περισσότερες από 2–3 συνεδρίες. Ένδειξη υπερφόρτωσης είναι να ανοίγετε το Agent View και να μην μπορείτε να πείτε αμέσως τι κάνει κάθε agent. Περιοριστείτε σε δύο ταυτόχρονες συνεδρίες. Αν η εργασία απαιτεί περισσότερες, πρέπει να οργανωθεί μέσω /goal + υποπρακτόρων και όχι χειροκίνητα.

4. Τα worktrees από -p (headless) δεν εκκαθαρίζονται αυτόματα. Η εντολή claude --worktree feature-x -p "do thing" δεν εμφανίζει διαδραστική προτροπή εξόδου, επομένως δεν υπάρχει στιγμή που το Claude να ρωτήσει «να αφαιρεθεί το worktree;». Αυτά τα worktrees συσσωρεύονται. Καθαρίστε τα χειροκίνητα: git worktree remove .claude/worktrees/feature-x. Ή χρησιμοποιήστε ένα cron script που αφαιρεί οτιδήποτε είναι παλαιότερο από 7 ημέρες.

5. Παράθυρο εμπιστοσύνης σε νέο φάκελο. Αν ανοίξετε το αποθετήριο για πρώτη φορά και εκτελέσετε αμέσως claude --worktree, η εντολή θα αποτύχει. Εκτελέστε claude χωρίς σημαίες, αποδεχτείτε την εμπιστοσύνη χώρου εργασίας και βγείτε—έπειτα το --worktree θα λειτουργήσει. Αυτό είναι σκόπιμο, ώστε το Claude να μην αποκτά πρόσβαση στο έργο κάποιου άλλου χωρίς τη συγκατάθεση του χρήστη.

Εκκαθάριση: τι διαγράφεται αυτόματα

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

Ένα worktree από --worktree χωρίς αλλαγές (χωρίς commits, μη παρακολουθούμενα αρχεία ή μη δεσμευμένες αλλαγές) αφαιρείται αυτόματα όταν βγείτε. Αν υπάρχουν αλλαγές, το Claude θα ρωτήσει. Τα worktrees από υποπράκτορες και /bg αφαιρούνται αυτόματα από το χρονικό όριο cleanupPeriodDays στις ρυθμίσεις, αν είναι καθαρά. Τα worktrees από -p δεν καθαρίζονται καθόλου—αφαιρέστε τα χειροκίνητα με git worktree remove.

Η λογική εκκαθάρισης εξαρτάται από το τι έχετε κάνει στο worktree και πώς ξεκινήσατε τη συνεδρία. Η τεκμηρίωση της Anthropic παραθέτει τρία σενάρια:

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

— Anthropic Docs, https://code.claude.com/docs/en/worktrees

Σενάριο 1: μπήκατε, δεν κάνατε τίποτα και βγήκατε—το worktree αφαιρέθηκε.

Σενάριο 2: κάνατε κάποια δουλειά χωρίς να την κάνετε commit—το Claude θα ρωτήσει «διατήρηση ή αφαίρεση;» όταν βγείτε. Η επιλογή «διατήρηση» αποθηκεύει τον φάκελο και το branch για αργότερα. Η επιλογή «αφαίρεση» διαγράφει τον κατάλογο μαζί με μη δεσμευμένες αλλαγές και νέα commits. Αυτό είναι καταστροφικό—μην επιλέγετε «αφαίρεση» από συνήθεια.

Σενάριο 3: εκκινήσατε με -p (headless) και η εντολή ολοκληρώθηκε και τερματίστηκε. Το worktree παραμένει. Καθαρίστε το χειροκίνητα:

git worktree remove .claude/worktrees/feature-x

Επιπλέον, τα worktrees από υποπράκτορες και συνεδρίες /bg αφαιρούνται αυτόματα από τον καθαρισμό παρασκηνίου αν είναι παλαιότερα από cleanupPeriodDays ημέρες (μια ρύθμιση, συνήθως 30 ημέρες από προεπιλογή) και δεν έχουν μη αποθηκευμένη εργασία. Τα worktrees από --worktree δεν επηρεάζονται από τον αυτόματο καθαρισμό—είναι δική σας ευθύνη.

Εναλλακτικές για SVN, Perforce και Mercurial: το hook WorktreeCreate

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

Η λειτουργία worktree χρησιμοποιεί από προεπιλογή το git worktree. Για SVN, Perforce, Mercurial και άλλα VCS, μπορείτε να συνδέσετε δικό σας μηχανισμό μέσω των hooks WorktreeCreate και WorktreeRemove στις ρυθμίσεις του Claude Code. Το hook λαμβάνει το όνομα από το stdin, πρέπει να εκτυπώσει τη διαδρομή του καταλόγου που δημιουργήθηκε και να τερματίσει με κωδικό 0. Όταν χρησιμοποιείτε δικό σας hook, το .worktreeinclude δεν επεξεργάζεται—πρέπει να αντιγράψετε τα τοπικά αρχεία μόνοι σας μέσα στο hook.

Αν το αποθετήριο χρησιμοποιεί Subversion ή Mercurial, η σημαία --worktree δεν θα λειτουργήσει απευθείας. Η Anthropic παρέχει ένα σημείο επέκτασης μέσω δύο hooks: WorktreeCreate (δημιουργεί ένα απομονωμένο αντίγραφο) και WorktreeRemove (το αφαιρεί).

Παράδειγμα hook SVN από την επίσημη τεκμηρίωση:

{
  "hooks": {
    "WorktreeCreate": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
          }
        ]
      }
    ]
  }
}

Το hook διαβάζει το όνομα του worktree από το stdin ({ "name": "feature-auth" }), εκτελεί svn checkout σε έναν προκαθορισμένο κατάλογο και εκτυπώνει τη διαδρομή στο stdout—το Claude Code τη χρησιμοποιεί ως κατάλογο εργασίας για τη νέα συνεδρία.

Μια σημαντική επιφύλαξη: όταν χρησιμοποιείτε δικό σας hook, το .worktreeinclude δεν χρησιμοποιείται. Αν χρειάζεστε .env ή άλλα αρχεία που αγνοούνται από το Git στον νέο φάκελο, αντιγράψτε τα μέσα στο ίδιο το script του hook.

Τι ακολουθεί: τρεις συναφείς μηχανισμοί παραλληλισμού

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

Το worktree παρέχει απομόνωση αρχείων. Το /bg παρέχει απομόνωση πλαισίου και tokens. Ο υποπράκτορας παρέχει απομόνωση εργασίας και εργαλείων. Το /goal παρέχει αυτονομία μέχρι να εκπληρωθεί μια συνθήκη. Το καθένα λύνει ένα πρόβλημα από μόνο του. Μαζί επιτρέπουν να διατηρείτε 3–5 παράλληλες εργασίες χωρίς νοητική κατάρρευση. Στη συνέχεια, έχει νόημα να εξερευνήσετε τους σχετικούς οδηγούς για την αυτόνομη λειτουργία, τους προσαρμοσμένους υποπράκτορες και τις δυναμικές ροές εργασίας μέσω των παρακάτω συνδέσμων.

Το worktree προσφέρει απομόνωση αρχείων. Το /bg προσφέρει απομόνωση πλαισίου. Οι υποπράκτορες προσφέρουν απομόνωση εργασιών. Κάθε μηχανισμός λύνει ένα πρόβλημα από μόνος του. Μαζί παρέχουν έναν τρόπο να εργάζεστε σε τρεις έως πέντε παράλληλες εργασίες χωρίς νοητική κατάρρευση. Αυτό είναι το σύνολο δεξιοτήτων πίσω από το προχωρημένο vibe-coding το 2026.

Αυτό το θέμα συνεχίζεται φυσικά σε τρία σχετικά θέματα: πώς να ρυθμίσετε έναν αυτόνομο agent με /goal και Agent View, πώς να δημιουργήσετε τους δικούς σας υποπράκτορες για τις εργασίες σας και πώς να εκκινήσετε εκατοντάδες agents μέσω των Dynamic Workflows.

Ανοίξτε το Ailoot.

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

Ερωτήσεις και απαντήσεις: Git worktree στο Claude Code: παράλληλες συνεδρίες

Το baseRef head αντιγράφει αλλαγές χωρίς commit σε νέο worktree;

Όχι. Ξεκινά από το τρέχον τοπικό HEAD commit, μαζί με τοπικά commits που λείπουν από remote. Tracked αλλαγές χωρίς commit μένουν στο αρχικό αντίγραφο· μεταφέρετε ρητά απαιτούμενο WIP και εξετάστε το νέο worktree.

Γιατί λείπει το .env σε νέο worktree;

Ένα worktree είναι νέο checkout, οπότε λείπουν τοπικά αρχεία που αγνοεί το Git. Το .worktreeinclude Claude Code απαριθμεί ignored αρχεία για αντιγραφή· προσαρμοσμένο hook WorktreeCreate πρέπει να τη χειρίζεται μόνο του. Συμπεριλάβετε μόνο αρχεία που χρειάζεται πραγματικά η εργασία.

Όλα τα άρθρα