- Fix
bun installfailing with "fatal: not a git repository" when there's no.git(a zip download or a git-dependency install): thepreparehook now skips lefthook cleanly (|| exit 0) instead of failing the whole install. - Make the CLI test suite pass on filesystems that can't create symlinks (e.g. a WSL
/mntDrvFs mount): it probes symlink support and skips only the symlink-specific assertions there, keeping full coverage everywhere else. (#70)
- Opt-in
--fasttransport - fetch folder/repo picks by streaming the host archive (.tar.gz) and blob picks via a raw HTTP GET, instead ofgit clone. Typically 2-4x faster; enable per-pick with--fastor fleet-wide withGITPICK_FAST=1.- Default behavior is unchanged (
git clone), so existing picks are byte-for-byte identical - the fast paths only run when opted in. - Zero-dependency streaming untar handles files, directories, symlinks, the executable bit, and pax long names; any miss (unknown host, non-2xx, unsupported entry, missing sub-path, mid-stream error, truncated archive, unsafe path) falls back to a clone.
- Verified byte-identical to a clone across a 100-repo differential test; the only differences are archive semantics
git clonedoes not apply (.gitattributesexport-ignore/export-subst, Windowscore.autocrlf, symlink-hostile Windows), all documented under "Fast Mode" in the README.
- Default behavior is unchanged (
- Add a dedicated
.gitpickignoresection to the README documenting the gitignore-style pattern syntax - Document local-folder interactive mode and file preview, and note the
degitbinary alias - Fix the bundle-size figure and tidy README grammar
- Docs/
--helppolish: reword the--auto-commit/--commitdescriptions to "Commit with ...", reorder the README features by relevance, and use plain hyphens (no em-dashes)
- Turn a clone into a git repo -
--init,--auto-commit,--commit <msg>--initinitializes the cloned output as a new git repository (idempotent; for a blob, inits the parent dir)--auto-commitinits and commits with messagechore: gitpick'ed--commit "<msg>"inits and commits with your own message- staging is scoped to exactly what was cloned (the interactive paths stage the exact copied files), so unrelated contents of a pre-existing target are never swept into the commit
git add --forceso a.gitignorethat rode along in the clone can't abort staging; huge picks use a NUL pathspec file (with an argv fallback on git < 2.25)- refuses to initialize the current working directory; a failed init/commit is surfaced but never undoes the successful clone
- Slash-containing branch names in
tree/blobURLs now resolve correctlyowner/repo/tree/feat/my-branch/srcpicks branchfeat/my-branchinstead of failing withError: git checkout feat- works across GitHub, GitLab, Bitbucket and Codeberg
- the common single-segment pick stays network-free (only re-resolves against the ref list when the optimistic guess fails)
- handles the tag-shadow case (a tag whose name prefixes a slash branch)
.gitpickignore- exclude paths from the copy with gitignore-style patterns- drop it at the root of the picked path; supports
*,**,?, trailing/(dir-only), and!to re-include - the
.gitpickignorefile itself is never copied to the destination
- drop it at the root of the picked path; supports
- Overwrite existing symlinks instead of throwing
EEXISTwhen re-picking into a populated directory
- Local directory interactive mode - browse local directories with
gitpick -igitpick -ibrowses cwdgitpick -i targetbrowses cwd, copies selected to targetgitpick ./path -i targetbrowses a specific path
- Uses
git ls-filesto respect.gitignorewhen in a git repo - Falls back to manual walk (skipping
.gitonly) outside git repos - Preserves symlinks when copying (uses
lstat+symlink) - Warns on symlink copy failures instead of swallowing silently
- Errors on target-inside-source and missing source with explicit target
- File preview - press enter on a file to view its content with line numbers and cursor navigation
- Syntax highlighting - 38 languages via vendored
@speed-highlight/core(zero runtime deps) - File sizes shown right-aligned in tree view (files and folders)
- Full file path shown in preview header
- Enter on symlink-to-folder jumps cursor to target and expands ancestors
- Relative symlink paths resolved correctly for preview and selection
- Ctrl-C works in preview mode
- Terminal resize handled correctly in preview mode
- ANSI-aware line truncation prevents color bleed
- Symlinks counted separately and shown in yellow in footer
- Selecting a symlink also selects its target file/folder
- Deselecting all children auto-deselects parent folder
- Press
.toggles select all from anywhere - Show "press . to select all" when nothing selected, "all selected" with size when everything selected
- Add interactive mode screenshot to README
- Show symlinks in interactive picker (yellow with
->target, matching dry-run tree) - Show "all selected" status when everything is selected
- Scope interactive picker to subpath when using tree URLs (e.g.
owner/repo/tree/main/src -i) - Re-render interactive picker on terminal resize
- Interactive mode (
-i/--interactive) - browse any repo's file tree in your terminal and cherry-pick exactly the files and folders you want- Hierarchical tree view with expand/collapse, multi-select, select all
- Keyboard navigation: arrow keys,
j/k,h/l, space, enter,cto confirm,qto quit - Shows selection stats: folder/file count, total size, scroll position
- Dark gray background highlight on current line,
●/○selection indicators - Auto-expands all levels for small repos (<=30 entries), 2 levels for larger ones
- Respects
--dry-run,--overwrite,--recursive,--tree - Graceful TTY guard, SIGINT cleanup, alternate screen buffer
- Works with GitHub, GitLab, Bitbucket, public and private repos
- Zero new dependencies
- Add interactive mode tests (TTY guard, help text)
- Update README with interactive mode docs, table of contents, controls reference
- Environment variable token support -
GITHUB_TOKEN/GH_TOKEN,GITLAB_TOKEN,BITBUCKET_TOKENauto-detected for private repos without embedding tokens in URLs - SIGINT/SIGTERM temp dir cleanup - signal handlers clean up active temp directories on process kill
- Non-TTY spinner suppression - spinner animation completely suppressed in CI/piped output
--verbosenow includes stats - file count with size, network/copy/total time breakdown- Non-blocking update notifier - checks npm registry in background, shows notice on next run
- Add
--quiet/-qflag - suppress all output except errors, ideal for CI pipelines and scripts - Add
--verboseflag - show detailed clone info: strategy (shallow/full), source URL, target path, file count, duration - Update banner to two lines for readability
- Add
dimcolor formatter - Reorder README features list
- Add
--treeflag - display cloned file structure as a colored tree (like thetreecommand)- Bold cyan for root directory, cyan for subdirs, yellow for symlinks, cyan/white for symlink targets
- Smart path header:
./for cwd-relative,~/for home-relative, absolute otherwise - Works with
--dry-run(clones to temp dir, prints tree, cleans up) - Consistent output for repos, folders, and blobs
copyDirnow returns list of copied file pathscloneActionreturnsCloneResultwith files and duration- Fix oxlint warnings in test suite
- Update package sizes in README
- Add CLI help examples for
--dry-run, GitLab and Bitbucket - Update README with package sizes, multi-host config examples, and verified adopters
- Add
--dry-run, GitLab and Bitbucket examples to CLI help output - Update README with package sizes and multi-host config examples
- Multi-host support - clone from GitLab and Bitbucket in addition to GitHub
- Add
--dry-run/-nflag to preview what would be cloned without cloning - Add
/commit/URL support -owner/repo/commit/SHAcorrectly extracts the commit SHA - Add
refs/remotesandrefs/tagssupport for raw URLs (in addition torefs/heads) - Preserve shorthand raw URL parsing (
owner/repo/refs/heads/branch/file) - Migrate test suite from bash scripts to bun:test (106 tests across dry-run, clone, config, integrity)
- Gate releases behind passing tests in CI
- Fix
pull_request.urlreference in release workflow
- 34KB → 19KB (43% smaller), zero dependencies
- Add
.gitpick.json/.gitpick.jsoncconfig file support - pick multiple files, folders, branches in one command - Internalize all external dependencies (terminal-link, yocto-spinner, yoctocolors, nano-spawn, strip-json-comments)
- Add symlink support in
copyDir - Fix Windows blob/tree path handling (split on both
/and\, usepath.dirname) - Add cross-platform CI (ubuntu, macos, windows)
- Add PowerShell test suite for Windows backslash paths
- Migrate from prettier to oxfmt, simple-git-hooks to lefthook, add oxlint
- Move tests to
tests/dir with cross-platformtree.mjsfor file tree output
- Add symlink support -
copyDirnow preserves symlinks instead of failing or following them - Migrate from prettier to oxfmt/oxlint
- Migrate from simple-git-hooks to lefthook
- Clean up release workflow
- Update build tooling dependencies
- Update package size in readme
- Add package runner support in test script
- Update dependency @types/node to v25
- Update build tooling dependencies
- Fix typo in related projects section
- Documentation updates
- Fix Twitter badge link in README
- Documentation and package.json updates
- Update dependencies
- Dependency updates
- Documentation improvements
- Internal improvements
- Dependency updates
- Update external dependencies
- Documentation improvements
- CLI and documentation improvements
- CLI improvements
- Clone action refinements
- Refactor clone action, URL transform, and time parsing utilities
- CI workflow updates
- External dependency management improvements
- CLI refinements
- Clone action improvements
- Extend commit clone capability
- External dependency updates
- Major internal refactor
- Test infrastructure improvements
- Dependency updates
- CI improvements
- Major rewrite - new architecture with external vendored dependencies
- Zero runtime dependencies
- Faster cloning with shallow clone + sparse checkout
- Support for shorthands (
owner/repo), full URLs, and SSH URLs - Clone repos, trees, blobs, branches, commits, and raw content
- Watch mode (
--watch) for continuous syncing - Private repo support via PAT tokens
- Windows long path support
- Fix Win32 long paths support (#6)
- Logging improvements
- Switch from inquirer/ora to clack
- Add overwrite alias (
-ofor--force) - Documentation updates