2.2 KiB
2.2 KiB
DOMAIN.md — Git Worktree Concepts
Git Worktrees
A git worktree is a linked working directory that shares the same repository but checks out a different branch. Multiple worktrees can exist simultaneously, each on its own branch, without switching branches in any of them.
Key Commands
git worktree list— show all linked worktrees with paths and branchesgit worktree add <path> [branch]— create a new linked worktreegit worktree add -b <new-branch> <path>— create with a new branchgit worktree remove <path>— remove a linked worktree (refuses if uncommitted changes)git worktree prune— clean up stale entries for deleted worktrees
Terminology
| Term | Definition |
|---|---|
| Main repo | The original repository directory (where .git/ lives for non-bare repos) |
| Linked worktree | An additional working directory linked to the same repo via git worktree add |
| Bare repo | A .git/ without a working tree — used as the central store when all worktrees are linked |
| Detached HEAD | When a worktree checks out a commit directly instead of a branch |
Constraints (from git itself)
- You cannot create a nested worktree (worktree inside a worktree).
- Multiple worktrees on the same branch is possible with
-fbut dangerous and not recommended. git worktree removerefuses if there are uncommitted or untracked changes.- The main repo counts as a "worktree" in
git worktree list.
pi Session Concepts
| Term | Definition |
|---|---|
| Session | A conversation context within pi, tied to a specific cwd/branch |
| Cwd change | When pi changes its working directory (e.g., switching worktrees) |
| Branch display | The footer indicator showing which git branch pi is tracking |
| Back-switching | Restoring the previous session when returning to the main repo from a worktree |
How Sessions Relate to Worktrees
- Each worktree can have its own session for focused context.
- Switching worktrees updates the branch display automatically (pi reads HEAD from the new cwd).
- Users are offered a choice: create a fresh session or keep the current one.
- Back-switching restores the session that was active before leaving the main repo.