Równoległy development z Git Worktree
Jesteś w połowie pracy na feature branchu, gdy wpada raport o błędzie P0. Musisz zbadać go i naprawić natychmiast, ale stashowanie pracy w toku grozi utratą kontekstu, a przełączanie branchy niszczy twoje node_modules i cache build. Git worktree rozwiązują ten problem dając ci wiele niezależnych checkoutów tego samego repozytorium, a aplikacja Codex czyni worktree pełnoprawnym elementem workflow.
Czego się nauczysz
Dział zatytułowany „Czego się nauczysz”- Kompletny workflow do uruchamiania, pracy i mergowania wątków opartych na worktree w Codex
- Jasne kryteria decyzyjne dla wyboru “Work on the worktree” vs “Sync with local”
- Strategie uruchamiania wielu agentów równolegle na tym samym codebase’ie bez konfliktów
- Praktyki czyszczenia i zarządzania dyskiem zapobiegające rozrostowi worktree
Jak działają worktree w Codex
Dział zatytułowany „Jak działają worktree w Codex”Gdy uruchamiasz wątek Worktree w aplikacji Codex, Codex tworzy Git worktree w $CODEX_HOME/worktrees. Worktree startuje na commit HEAD dowolnego brancha, który wybierzesz, i zaczyna w stanie detached HEAD — bez zanieczyszczania branchy. Twój lokalny checkout pozostaje nienaruszony.
Każdy worktree ma własną kompletną kopię plików repozytorium. Współdzielą te same metadane .git (commity, branche, refy), ale każdy ma niezależne drzewo robocze, indeks i HEAD. To oznacza, że Codex może uruchamiać testy, instalować zależności i edytować kod w jednym worktree, podczas gdy ty kontynuujesz pracę w innym.
Workflow dwóch ścieżek
Dział zatytułowany „Workflow dwóch ścieżek”Po zakończeniu pracy Codex na worktree masz dwie opcje obsługi wyników:
Ścieżka 1: Praca na worktree
Dział zatytułowany „Ścieżka 1: Praca na worktree”Najlepsza, gdy możesz zweryfikować zmiany bezpośrednio na worktree (np. twój lokalny skrypt setup środowiska instaluje wszystkie zależności).
- Kliknij Create branch here w nagłówku wątku, żeby zamienić detached HEAD w nazwany branch.
- Użyj wbudowanego terminala lub przycisku “Open”, żeby uruchomić IDE wskazujące na worktree.
- Uruchom testy, zweryfikuj zmiany i iteruj follow-up promptami.
- Commituj, pushuj i twórz PR bezpośrednio z aplikacji Codex.
- Opcjonalnie “Add to sidebar”, żeby promować worktree do stałego miejsca pracy.
Ścieżka 2: Synchronizacja z lokalnym
Dział zatytułowany „Ścieżka 2: Synchronizacja z lokalnym”Najlepsza, gdy potrzebujesz zmian w swoim głównym checkout (np. możesz uruchomić tylko jedną instancję dev servera).
- Kliknij Sync with local w nagłówku wątku.
- Wybierz utworzenie nowego brancha lub synchronizację z istniejącym.
- Wybierz metodę synchronizacji:
- Apply: Oblicza zmiany od najbliższego współdzielonego commita i aplikuje je jako patch, zachowując twoją lokalną historię commitów.
- Overwrite: Sprawia, że twój lokalny checkout dokładnie odpowiada worktree, zastępując lokalne pliki i historię commitów.
- Rozwiąż ewentualne konflikty, jeśli twój lokalny checkout się rozjechał.
- Zweryfikuj zmiany w swoim lokalnym środowisku.
Wiele worktree, jeden feature branch
Dział zatytułowany „Wiele worktree, jeden feature branch”Potężny wzorzec polega na synchronizowaniu wielu wątków worktree do tego samego feature brancha. Każdy wątek obsługuje inny aspekt pracy, a ty aplikujesz każdy sekwencyjnie:
- Uruchom wszystkie wątki z
main - W miarę kończenia każdego, zsynchronizuj go do
feature/user-v2używając “Apply” - Jeśli zmiany kolidują, użyj “Overwrite local”, żeby zresetować i czysto zaaplikować
To efektywnie zrównolegluje development feature’a na wielu agentach Codex.
Ograniczenia branchy
Dział zatytułowany „Ograniczenia branchy”Git wymusza regułę jednego brancha na worktree. Jeśli utworzysz feature/a na worktree, nie możesz jednocześnie checkoutować feature/a w swoim lokalnym checkout ani żadnym innym worktree. Zobaczysz:
fatal: 'feature/a' is already used by worktree at '<WORKTREE_PATH>'Rozwiązanie: użyj “Sync with local” zamiast ręcznego checkoutu brancha. Lub checkoutuj inny branch na worktree, żeby zwolnić nazwę.
Czyszczenie worktree
Dział zatytułowany „Czyszczenie worktree”Każdy worktree kopiuje pliki repozytorium, zależności i cache build. To szybko się sumuje. Codex zarządza czyszczeniem automatycznie z tymi regułami:
Nigdy nie czyszczone:
- Worktree powiązane z przypiętymi konwersacjami
- Worktree promowane do sidebara
Kwalifikujące się do czyszczenia:
- Starsze niż 4 dni
- Gdy masz więcej niż 10 worktree
Przed usunięciem worktree Codex zapisuje snapshot. Jeśli otworzysz ponownie wątek, którego worktree został wyczyszczony, zobaczysz opcję przywrócenia.
Gdy coś nie działa
Dział zatytułowany „Gdy coś nie działa”- “Branch is already used by worktree”: Inny worktree ma ten branch checkoutowany. Przełącz ten worktree na inny branch lub użyj Sync with local zamiast tego.
- Konflikty synchronizacji: Gdy twój lokalny checkout znacząco się rozjechał z worktree, “Apply” może się nie powieść. Użyj “Overwrite local” dla czystego startu lub rozwiąż konflikty ręcznie w terminalu.
- Brakujące zależności w worktree: Worktree to świeży checkout. Skonfiguruj lokalny skrypt setup środowiska w ustawieniach aplikacji Codex, żeby automatycznie instalował zależności przy tworzeniu worktree.
- Pliki
.gitignorenie przenoszą się: Proces synchronizacji używa operacji Git, więc wszystko w.gitignore(jaknode_modules,.env, artefakty build) nie zostanie przeniesione. Uruchom skrypt setup po synchronizacji.
Co dalej
Dział zatytułowany „Co dalej”- Automatyzacje — Automatyzacje działają w dedykowanych worktree, więc zrozumienie worktree to fundament
- Mistrzostwo w aplikacji — Pełny workflow aplikacji Codex w tym zarządzanie wieloma projektami
- Operacje wsadowe — Łącz worktree z zadaniami chmurowym dla zmian na dużą skalę