Clone exactly what you need aka straightforward project scaffolding!
📦 Zero dependencies / Un/packed (<35/15kb) / Faster and more features yet drop-in replacement for degit
Just
copy-and-pasteany GitHub URL - no editing required (shorthands work too) - to clone individual files, folders, branches, commits, raw content or even entire repositories without the.gitdirectory.
Unlike other tools that force you to tweak URLs or follow strict formats to clone files, folders, branches or commits GitPick works seamlessly with any URL.
📖 Some Examples
See Quick Usage for to learn more.
# clone a repo without .git npx gitpick owner/repo npx gitpick https://github.com/owner/repo # clone a folder aka tree npx gitpick owner/repo/tree/main/path/to/folder npx gitpick https://github.com/owner/repo/tree/main/path/to/folder # clone a file aka blob npx gitpick owner/repo/blob/main/path/to/file npx gitpick https://github.com/owner/repo/blob/main/path/to/file # clone a branch npx gitpick owner/repo -b canary npx gitpick https://github.com/owner/repo -b canary npx gitpick owner/repo/tree/canary npx gitpick https://github.com/owner/repo/tree/canary # clone a commit SHA npx gitpick owner/repo -b cc8e93 npx gitpick https://github.com/owner/repo/commit/cc8e93 # clone submodules npx gitpick owner/repo -r npx gitpick https://github.com/owner/repo -r # clone a private repo npx gitpick https://<token>@github.com/owner/repo
✨ Features
- 🔍 Clone individual files or folders from any GitHub repository
- ⚙️ Auto-detects branches and target directory (if not specified) like
git clone - 🧠 Use shorthands
TanStack/routeror full URL'shttps://github.com/TanStack/router - 🗑️ Overwrite or replace existing files without a prompt using
-o|--overwrite - 📦 Can easily clone all submodules with
-r|--recursive - 🔁 Sync changes remotely with
--watchusing intervals (e.g.,15s,1m,1h) - 🔐 Seamlessly works with both public and private repositories using a PAT
🚀 Quick Usage
npx gitpick <url/shorthand> [target] [options]
- [target] and [options] are optional, if not specified, GitPick fallbacks to the default behavior of
git clone
Examples:
npx gitpick https://github.com/owner/repo # repo without .git npx gitpick owner/repo/tree/main/path/to/folder # a folder aka tree npx gitpick owner/repo/blob/main/path/to/file # a file aka blob npx gitpick <url/shorthand> # default git behavior npx gitpick <url/shorthand> [target] # with optional target npx gitpick <url/shorthand> -b [branch/SHA] # branch or commit SHA npx gitpick <url/shorthand> -o # overwrite if exists npx gitpick <url/shorthand> -r # clone submodules npx gitpick <url/shorthand> -w 30s # sync every 30 seconds npx gitpick https://<token>@github.com/owner/repo # private repository
🔧 Options
-b, --branch Branch/SHA to clone
-o, --overwrite Skip overwrite prompt
-r, --recursive Clone submodules
-w, --watch [time] Watch the repository and sync every [time]
(e.g. 1h, 30m, 15s)
-h, --help display help for command
-v, --version display the version number
🔐 Private Repos
Use a GitHub personal access token (create one 👉 here) with repo -> contents: read-only permission:
npx gitpick https://<token>@github.com/owner/repo
📦 Install Globally (Optional)
npm install -g gitpick gitpick <url/shorthand> [target] [options]
🛠 More Tools
Check out more projects at github.com/nrjdalal
🔗 Related Projects
🤝 Contributing
Contributions welcome — any help is appreciated!
- Fork the repo and create a branch (use descriptive names, e.g. feat/ or fix/).
- Make your changes, add tests if applicable, and run the checks:
- bun install
- bun run sync:external
- bun test
- Follow the existing code style and commit message conventions (use conventional commits: feat, fix, docs, chore).
- Open a PR describing the change, motivation, and any migration notes; link related issues.
- For breaking changes or large features, open an issue first to discuss the approach.
- By contributing you agree to the MIT license and the project's Code of Conduct.
Thank you for helping improve GitPick!
📄 License
MIT – LICENSE