Skip to content

Releases: nrjdalal/gitpick

6.0.0

Choose a tag to compare

@nrjdalal nrjdalal released this 03 Jul 06:31
4ab7bce

Everything new for users since 5.4.

✨ New

Turn a clone into a git repo — --init / --auto-commit / --commit (6.0)

gitpick strips .git when cloning; these flags put one back so you can start tracking your scaffold in a single step:

  • --init — initialize the cloned output as a new git repository
  • --auto-commit--init + an initial commit with message chore: gitpick'ed
  • --commit "<msg>"--init + an initial commit with your own message
gitpick owner/repo my-app --commit "feat: scaffold from template"
gitpick owner/repo my-app --auto-commit

Both commit flags imply --init. Staging is scoped to exactly what was cloned, so unrelated files already sitting in the target are never swept into the commit — and a .gitignore that came down with the clone won't block it.

.gitpickignore (5.5)

Drop a .gitpickignore at the root of the picked path to exclude matching files from the copy, using familiar gitignore-style patterns (*, **, ?, trailing / for dir-only, ! to re-include).

# .gitpickignore
*.log
build/
!build/keep.txt

🐛 Fixes

  • Slash-containing branches now work (5.5.1) — URLs like owner/repo/tree/feat/my-branch/src resolve the real branch instead of failing with Error: git checkout feat. Works across GitHub, GitLab, Bitbucket and Codeberg, and the common single-segment case stays network-free.
  • Symlink re-picks (5.5) — re-running a pick into an existing directory no longer errors with EEXIST on symlinks; they overwrite cleanly like regular files.

Install: npx gitpick@latest … or npm i -g gitpick

v5.4.0

Choose a tag to compare

@nrjdalal nrjdalal released this 22 Mar 12:19
cf9dac0

Local Directory Interactive Mode

Browse local directories right in your terminal with the same interactive picker.

gitpick -i              # browse cwd
gitpick -i target       # browse cwd, copy selected to target
gitpick ./src -i dest   # browse src, copy to dest
gitpick . -i --dry-run  # preview only

What's new

  • Local interactive mode - gitpick -i works without a URL
  • Uses git ls-files to respect .gitignore when in a git repo
  • Falls back to manual walk outside git repos
  • Preserves symlinks when copying
  • Warns on symlink copy failures
  • Errors on target-inside-source and missing source with explicit target

Stats

  • Package size: 25 KB packed / 67 KB unpacked
  • 132 tests passing

Full Changelog: v5.3.0...v5.4.0

v5.3.0

Choose a tag to compare

@nrjdalal nrjdalal released this 22 Mar 02:09
687bfcc

File Preview with Syntax Highlighting

Press enter on any file in interactive mode to preview its content with line numbers, cursor navigation, and syntax highlighting for 38 languages.

What's new

  • File preview - press enter on a file to view content with line numbers
  • Syntax highlighting - 38 languages via vendored @speed-highlight/core (zero runtime deps)
  • File/folder sizes shown right-aligned in tree view
  • Enter on symlink-to-folder jumps cursor to target and expands ancestors
  • Relative symlink paths resolved correctly
  • Ctrl-C works in preview mode
  • Terminal resize handled in preview mode
  • ANSI-aware line truncation

Stats

  • Package size: 24 KB packed / 64 KB unpacked
  • 132 tests passing

Full Changelog: v5.2.0...v5.3.0

v5.2.0

Choose a tag to compare

@nrjdalal nrjdalal released this 22 Mar 00:22
878e9d1
  • Symlinks counted separately and shown in yellow in footer
  • Selecting a symlink also selects its target file/folder (deselecting symlink keeps target selected)
  • 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

Full Changelog: v5.1.0...v5.2.0

v5.1.0

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 23:59
bc10eb8
  • 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

Full Changelog: v5.0.0...v5.1.0

v5.0.0

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 23:41
2f9c624

Interactive Mode 🔥

Browse any repo's file tree in your terminal and cherry-pick exactly the files and folders you want.

npx gitpick owner/repo -i

What's new

  • Interactive mode (-i / --interactive) - browse, navigate, and select files/folders before cloning
    • Hierarchical tree view with expand/collapse, multi-select, select all (. row)
    • Keyboard navigation: arrow keys, j/k, h/l, space, enter, c to confirm, q to quit
    • Selection stats: folder/file count, total size, scroll position
    • Auto-expands small repos, 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

Stats

  • Package size: 13.8 KB packed / 37.5 KB unpacked
  • 132 tests passing

Full Changelog: v4.19.0...v5.0.0

v4.19.0

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 21:47
2170b69

What's New

Environment variable token support

Private repos without embedding tokens in URLs:

export GITHUB_TOKEN=ghp_xxxx    # or GH_TOKEN
export GITLAB_TOKEN=glpat-xxxx
export BITBUCKET_TOKEN=xxxx

gitpick owner/private-repo  # token picked up automatically

URL-embedded tokens still take precedence.

SIGINT/SIGTERM temp dir cleanup

No more orphaned temp directories when you Ctrl+C mid-clone.

Non-TTY spinner suppression

Spinner animation completely suppressed in CI and piped output — only the success line is printed.

--verbose now includes stats

  clone:    shallow (depth=1)
  from:     https://github.com/owner/repo.git @ main
  to:       ./my-project
  files:    6 (707 B)
  network:  1.01s
  copy:     0s
  total:    1.01s

Update notifier

Non-blocking background check — fetches npm registry, caches for 24h, shows notice on next run if a newer version exists.

Full Changelog: v4.18.0...v4.19.0

v4.18.0

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 20:40
8b6a058

What's New

--quiet / -q

Suppress all output except errors — ideal for CI pipelines and scripts.

$ gitpick nrjdalal/picksuite folder -q
# (no output, exit 0)

--verbose

Show detailed clone information after success — useful for debugging.

✔ Picked tree from repository in 1.08 seconds.
  clone:    shallow (depth=1)
  from:     https://github.com/nrjdalal/picksuite.git @ main
  to:       /tmp/folder
  files:    2
  duration: 1.08s

When shallow clone fails (e.g., commit SHA):

  clone:    full (depth=full)

Other

  • Banner split to two lines for readability
  • Add dim color formatter
  • Reorder README features list
  • 8 new tests (125 total)

Full Changelog: v4.17.0...v4.18.0

v4.17.0

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 20:01
404d4df

What's New

--tree flag

Display cloned file structure as a colored tree — works with repos, folders, blobs, and --dry-run.

$ gitpick nrjdalal/picksuite my-project --tree
./my-project
├── file.txt
├── folder
│   ├── deep
│   │   └── file.txt
│   └── nested.txt
├── README.md
├── symdir -> folder
└── symlink.txt -> file.txt

$ gitpick nrjdalal/picksuite --dry-run --tree
# Same output, no files left on disk

Color scheme:

  • Bold cyan — root directory header
  • Cyan — subdirectories, symlink targets pointing to dirs
  • No color — regular files, symlink targets pointing to files
  • Yellow — symlink names

Smart path display: ./ for cwd-relative, ~/ for home-relative, absolute otherwise.

Other changes

  • copyDir now returns list of copied file paths
  • cloneAction returns CloneResult with files and duration
  • Fix oxlint warnings in test suite
  • Update package sizes in README

Full Changelog: v4.16.2...v4.17.0

v4.16.2

Choose a tag to compare

@nrjdalal nrjdalal released this 21 Mar 18:24
208940d

What's New

  • Add --dry-run, GitLab and Bitbucket examples to CLI help output
  • Update README with package sizes, multi-host config examples, and verified adopters

Full Changelog: v4.16.1...v4.16.2