All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Directory copying now skips excluded child subtrees during copy instead of cloning them and deleting them afterward.
git gtr trustnow covers.gtrconfighooks,defaults.editor, anddefaults.aientries as executable commands, preventing shared config from running hooks or selecting editor/AI commands until reviewed.
- Fish shell integration now resolves linked-worktree
.gtrconfigfiles correctly and preserves the target worktree directory while checking trust. - Fish shell integration now computes trust hashes consistently with
git gtr trustfor multi-entry.gtrconfigfiles.
2.7.0 - 2026-04-27
git gtr new --remoteandgtr.defaultRemote/GTR_DEFAULT_REMOTEto choose the remote used for default branch detection, fetches, and tracked branch creation (#171)--to <ref>forgit gtr clean --mergedto limit cleanup to PRs/MRs merged into a specific target ref, with branch-tip matching for reused branch names (#167)
- Repo root resolution now works correctly from subdirectories (#166)
- Hooks that read stdin no longer drain input and skip later hooks (#165)
- Fish
git gtr cdfzf picker now changes directory when pressing Enter (#172) git gtr copynow honors configuredgtr.copy.includeDirsandgtr.copy.excludeDirs, including dry-run,--all, and--fromflows (#173)
2.6.0 - 2026-03-19
--forceforgit gtr clean --mergedto remove dirty merged worktrees, including ones with untracked files (#158)
- Bash wrapper completions now preserve delegated completion context correctly (#159)
2.5.0 - 2026-03-11
git gtr new --cdshell integration so newly created worktrees can open in the current shell (#151)- Cached
git gtr initoutput for faster shell startup (#142) ctrl-nkeybinding in the interactivegit gtr cdpicker to create a new worktree inline (#141)
git gtr ainow runspostCdhooks before launching AI tools (#145)- Improved interactive picker discoverability and empty-state guidance (#139)
- AI/editor launches from the fzf picker now run after fzf exits so terminal apps get a full terminal session (#140)
--fromrefs now resolve to SHAs to prevent Git DWIM from choosing the wrong branch (#147)- Default-branch tracking now uses
origin/<branch>when branching from the remote default branch (#149) - Homebrew-installed completion assets now work with
git gtr completion <shell>(#155)
2.4.0 - 2026-02-24
- Interactive fzf worktree picker for
git gtr cdwith preview, keybindings, and multi-action support (#136) - Helpful error message when running
git gtr cdexplaining shell integration requirement (#137)
- Limit
finddepth for simple directory copy patterns for better performance (#130)
- Root-level files now matched correctly for
**glob patterns on Bash 3.2 (#133) - Antigravity adapter support (#131)
2.3.1 - 2026-02-17
- Google Antigravity adapter (#121)
- Copy-on-write (CoW) cloning for directory copies on supported filesystems (#122)
gtr/coreutils naming conflict resolved andcdcompletions added (#125)- Main repo root resolved correctly from inside worktrees (#126)
resolve_targetfallback viagit worktree listfor external worktrees (#128)
2.3.0 - 2026-02-12
- Color output with
NO_COLOR/GTR_COLOR/gtr.ui.colorconfig support (#120) - Per-command help system with
_help_<command>()functions (#120) - BATS test suite with 174 automated tests (#119)
- Modularized monolithic
bin/gtrintolib/*.shlibraries andlib/commands/*.sh(#119) - Unified adapter loading for editors and AI tools (#116)
- Unified bidirectional config key mapping (#115)
- Removed ghost completion flag and added missing completions (#111)
2.2.0 - 2026-02-10
mv/renamecommand for worktree renaming (#95)- Shell integration via
git gtr initwithgit gtr cdnavigation (#104) postCdhook for shell integration (#109)- GitLab support for
clean --merged(#105) --folderflag for custom worktree folder names (#82)--no-hooksflag to skip post-create hooks (#91)- Auggie CLI adapter (#84)
$HOME/.local/binas install path option (#100)
- Base directory excluded from worktree list output (#86)
- Zsh completion timing issue resolved with
git gtr completioncommand (#87) .gtrconfigfile key auto-mapping incfg_default(#88)- Paths with slashes in
includeDirsnow handled correctly (#103)
2.1.0 - 2026-01-14
.code-workspacefile support for VS Code/Cursor editors (#78)--editorand--aiflags tonewcommand for immediate editor/AI tool launch (#72)config listaction with improved scope handling (#68)--mergedflag tocleancommand for squash-merged PR detection (#64)- GitHub Copilot CLI adapter (#56)
preRemovehooks to run commands before worktree removal, with abort on failure unless--force(#48)copycommand for syncing files to existing worktrees with--alland--dry-runoptions (#39).gtrconfigfile support for declarative team configuration using gitconfig syntax (#38).worktreeincludefile support for pattern-based file copying (#28)- Install script with platform detection (#63)
- Fish completion renamed to
git-gtr.fishfor proper git subcommand detection (#71) - Git error messages now surfaced on worktree removal failure (#55)
rmcommand now displays folder name instead of branch name for clarity (#53)- Branch names with
#now sanitized to prevent shebang issues in folder names (#44) - Symlinks preserved when copying directories (#46)
config get/unsetnow handle multi-value keys correctly (#37)- Branch track output silenced in auto mode (#33)
2.0.0 - 2025-11-24
runcommand to execute commands in worktrees without navigation (e.g.,git gtr run <branch> npm test)--from-currentflag forgit gtr newcommand to create worktrees from the current branch instead of the default branch (useful for creating parallel variant worktrees)- Directory copying support via
gtr.copy.includeDirsandgtr.copy.excludeDirsto copy entire directories (e.g.,node_modules,.venv,vendor) when creating worktrees, avoiding dependency reinstallation - OpenCode AI adapter
- Pull request template (
.github/PULL_REQUEST_TEMPLATE.md) - Path canonicalization to properly resolve symlinks and compare paths
- BREAKING: Migrated primary command from
gtrtogit gtrsubcommand to resolve coreutils conflict withgtrcommand git-gtrwrapper now properly resolves symlinks and delegates to maingtrscript- Version output now displays as "git gtr version X.X.X" instead of "gtr version X.X.X"
- Help messages and error output now reference
git gtrinstead ofgtr - Base directory resolution now canonicalizes paths before comparison to handle symlinks correctly
- README extensively reorganized and expanded with clearer examples and better structure
- Claude AI adapter now supports shell function definitions (e.g.,
eval "$(ssh-agent -s)") in shell initialization files - Path comparison logic now canonicalizes paths before checking if worktrees are inside repository
.gitignorewarnings now work correctly with symlinked paths- Zsh completion: Fixed word array normalization to correctly handle
gtrandgit-gtrdirect invocations (not justgit gtr) - Zsh completion: Fixed
newcommand options to complete at any position, not just after the first argument - Zsh completion: Added
--editorcompletion foreditorcommand with list of available editors - Zsh completion: Added
--aicompletion foraicommand with list of available AI tools - Zsh completion: Added
--porcelaincompletion forlist/lscommands - Zsh completion: Added
--globalcompletion forconfigcommand
1.0.0 - 2025-11-14
- Initial release of
gtr(Git Worktree Runner) - Core commands:
new,rm,go,open,ai,list,clean,doctor,config,adapter,help,version - Worktree creation with branch sanitization, remote/local/auto tracking, and
--force --namemulti-worktree support - Base directory resolution with support for
.(repo root) and./path(inside repo) plus legacy sibling behavior - Configuration system via
git config(local→global→system precedence) and multi-value merging (copy.include,hook.postCreate, etc.) - Editor adapter framework (cursor, vscode, zed, idea, pycharm, webstorm, vim, nvim, emacs, sublime, nano, atom)
- AI tool adapter framework (aider, claude, codex, cursor, continue)
- Hooks system:
postCreate,postRemovewith environment variables (REPO_ROOT,WORKTREE_PATH,BRANCH) - Smart file copying (include/exclude glob patterns) with security guidance (
.env.examplevs.env) - Shell completions for Bash, Zsh, and Fish
- Diagnostic commands:
doctor(environment check) andadapter(adapter availability) - Debian packaging assets (
build-deb.sh,Makefile,debian/directory) - Contributor & AI assistant guidance:
.github/instructions/*.instructions.md,.github/copilot-instructions.md,CLAUDE.md - Support for storing worktrees inside the repository via
gtr.worktrees.dir=./<path>
- Improved base directory resolution logic to distinguish
.(repo root),./path(repo-internal) from other relative values (sibling directories)