{"id":25013087,"url":"https://github.com/nrjdalal/gitpick","last_synced_at":"2026-04-01T21:54:56.995Z","repository":{"id":272594176,"uuid":"917172950","full_name":"nrjdalal/gitpick","owner":"nrjdalal","description":"Clone exactly what you need aka straightforward project scaffolding!","archived":false,"fork":false,"pushed_at":"2025-04-12T00:13:12.000Z","size":393,"stargazers_count":18,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T01:24:40.424Z","etag":null,"topics":["clone","degit","directory","file","folder","git","github","repository","scaffolding","template","url"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/gitpick","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nrjdalal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"nrjdalal"}},"created_at":"2025-01-15T13:50:36.000Z","updated_at":"2025-04-07T16:10:23.000Z","dependencies_parsed_at":"2025-01-15T13:59:51.960Z","dependency_job_id":"7f6dec86-bc93-4cb2-88d1-f80cd56f78b9","html_url":"https://github.com/nrjdalal/gitpick","commit_stats":null,"previous_names":["nrjdalal/awesome-git-cli"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrjdalal%2Fgitpick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrjdalal%2Fgitpick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrjdalal%2Fgitpick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nrjdalal%2Fgitpick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nrjdalal","download_url":"https://codeload.github.com/nrjdalal/gitpick/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248633344,"owners_count":21136857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clone","degit","directory","file","folder","git","github","repository","scaffolding","template","url"],"created_at":"2025-02-05T06:35:20.250Z","updated_at":"2026-04-01T21:54:56.986Z","avatar_url":"https://github.com/nrjdalal.png","language":"TypeScript","readme":"# GitPick\n\n\u003c!--  --\u003e\n\n**Clone exactly what you need aka straightforward project scaffolding!**\n\n[![Twitter](https://img.shields.io/twitter/follow/nrjdalal_dev?label=%40nrjdalal_dev)](https://twitter.com/nrjdalal_dev)\n[![npm](https://img.shields.io/npm/v/gitpick?color=red\u0026logo=npm)](https://www.npmjs.com/package/gitpick)\n[![downloads](https://img.shields.io/npm/dt/gitpick?color=red\u0026logo=npm)](https://www.npmjs.com/package/gitpick)\n[![stars](https://img.shields.io/github/stars/nrjdalal/gitpick?color=blue)](https://github.com/nrjdalal/gitpick)\n\n📦 `Zero dependencies` / `Un/packed (~67/25kb)` / `Faster and more features` yet drop-in replacement for `degit`\n\n\u003e #### Just `copy-and-paste` any GitHub, GitLab or Bitbucket URL - no editing required (shorthands work too) - to clone individual files, folders, branches, commits, raw content or even entire repositories without the `.git` directory.\n\nUnlike 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.\n\n**You can also try [Interactive Mode](#-interactive-mode)**. Browse any repo right in your terminal. See every file, pick what you want, skip what you don't. Just `gitpick owner/repo -i` and you're in. No more guessing paths.\n\n\u003cimg width=\"400\" alt=\"GitPick Meme\" src=\"https://github.com/user-attachments/assets/180c3e5b-320c-48d7-aaf9-a7402e74c882\" /\u003e\n\n---\n\n### Table of Contents\n\n- [Some Examples](#-some-examples)\n- [Features](#-features)\n- [Quick Usage](#-quick-usage)\n- [Options](#-options)\n- [Interactive Mode](#-interactive-mode)\n- [Private Repos](#-private-repos)\n- [Config File](#-config-file)\n- [Install Globally](#-install-globally-optional)\n- [Used By](#-used-by)\n- [Related Projects](#-related-projects)\n- [Contributing](#-contributing)\n\n---\n\n## 📖 Some Examples\n\n### See [Quick Usage](#-quick-usage) for to learn more.\n\n```sh\n# interactive mode - browse and pick files/folders\nnpx gitpick owner/repo -i\nnpx gitpick https://github.com/owner/repo -i\n# clone a repo without .git\nnpx gitpick owner/repo\nnpx gitpick https://github.com/owner/repo\n# clone a folder aka tree\nnpx gitpick owner/repo/tree/main/path/to/folder\nnpx gitpick https://github.com/owner/repo/tree/main/path/to/folder\n# clone a file aka blob\nnpx gitpick owner/repo/blob/main/path/to/file\nnpx gitpick https://github.com/owner/repo/blob/main/path/to/file\n# clone a branch\nnpx gitpick owner/repo -b canary\nnpx gitpick https://github.com/owner/repo -b canary\nnpx gitpick owner/repo/tree/canary\nnpx gitpick https://github.com/owner/repo/tree/canary\n# clone a commit SHA\nnpx gitpick owner/repo -b cc8e93\nnpx gitpick https://github.com/owner/repo/commit/cc8e93\n# clone submodules\nnpx gitpick owner/repo -r\nnpx gitpick https://github.com/owner/repo -r\n# clone a private repo\nnpx gitpick https://\u003ctoken\u003e@github.com/owner/repo\n# clone from GitLab\nnpx gitpick https://gitlab.com/owner/repo\nnpx gitpick https://gitlab.com/owner/repo/-/tree/main/path/to/folder\n# clone from Bitbucket\nnpx gitpick https://bitbucket.org/owner/repo\nnpx gitpick https://bitbucket.org/owner/repo/src/main/path/to/folder\n# dry run (preview without cloning)\nnpx gitpick owner/repo --dry-run\nnpx gitpick owner/repo -i --dry-run\n```\n\n---\n\n## ✨ Features\n\n- 🔍 Clone individual files or folders from GitHub, GitLab and Bitbucket\n- 🧠 Use shorthands `TanStack/router` or full URL's `https://github.com/TanStack/router`\n- ⚙️ Auto-detects branches and target directory (if not specified) like `git clone`\n- **🔥 Interactive mode** - browse and cherry-pick files/folders with `-i` | `--interactive`\n- 🔐 Seamlessly works with both public and private repositories using a PAT\n- 📦 Can easily clone all submodules with `-r` | `--recursive`\n- 🔎 Preview what would be cloned with `--dry-run` before cloning\n- 🌳 View cloned file structure as a colored tree with `--tree`\n- 🗑️ Overwrite or replace existing files without a prompt using `-o` | `--overwrite`\n- 🔁 Sync changes remotely with `--watch` using intervals (e.g., `15s`, `1m`, `1h`)\n- 🔇 Silent mode with `--quiet` for CI pipelines, debug mode with `--verbose`\n- 📋 Config file support (`.gitpick.json` / `.gitpick.jsonc`) for multi-path picks\n\n---\n\n## 🚀 Quick Usage\n\n```sh\nnpx gitpick \u003curl/shorthand\u003e [target] [options]\n```\n\n- [target] and [options] are optional, if not specified, GitPick fallbacks to the default behavior of `git clone`\n\nExamples:\n\n```sh\nnpx gitpick https://github.com/owner/repo           # repo without .git\nnpx gitpick owner/repo/tree/main/path/to/folder     # a folder aka tree\nnpx gitpick owner/repo/blob/main/path/to/file       # a file aka blob\n\nnpx gitpick \u003curl/shorthand\u003e                         # default git behavior\nnpx gitpick \u003curl/shorthand\u003e [target]                # with optional target\nnpx gitpick \u003curl/shorthand\u003e -b [branch/SHA]         # branch or commit SHA\nnpx gitpick \u003curl/shorthand\u003e -o                      # overwrite if exists\nnpx gitpick \u003curl/shorthand\u003e -r                      # clone submodules\nnpx gitpick \u003curl/shorthand\u003e -w 30s                  # sync every 30 seconds\nnpx gitpick \u003curl/shorthand\u003e --dry-run               # preview without cloning\nnpx gitpick https://\u003ctoken\u003e@github.com/owner/repo   # private repository\nnpx gitpick https://gitlab.com/owner/repo           # GitLab\nnpx gitpick https://bitbucket.org/owner/repo        # Bitbucket\n```\n\n\u003cimg width=\"720\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/ddbc41b4-bfc6-4287-bb85-eb949d723591\" /\u003e\n\n---\n\n## 🔧 Options\n\n```\n-b, --branch       Branch/SHA to clone\n-i, --interactive  Browse and pick files/folders interactively\n-n, --dry-run      Show what would be cloned without cloning\n-o, --overwrite    Skip overwrite prompt\n-r, --recursive    Clone submodules\n-w, --watch [time] Watch the repository and sync every [time]\n                   (e.g. 1h, 30m, 15s)\n    --tree         List copied files as a tree\n-q, --quiet        Suppress all output except errors\n    --verbose      Show detailed clone information\n-h, --help         display help for command\n-v, --version      display the version number\n```\n\n---\n\n## 🔥 Interactive Mode\n\n\u003e **New in v5.0.** Browse any repository's file tree in your terminal and cherry-pick exactly the files and folders you want.\n\n```sh\nnpx gitpick owner/repo -i\nnpx gitpick owner/repo -i -b canary\nnpx gitpick https://github.com/owner/repo -i\nnpx gitpick https://gitlab.com/owner/repo -i\n```\n\n\u003cimg width=\"720\" alt=\"Interactive Mode\" src=\"https://github.com/user-attachments/assets/9d6f4db7-ed84-4783-b815-0267719b3a52\" /\u003e\n\nNavigate with arrow keys, select with space, expand/collapse with enter, `.` to select all, `c` to confirm. Works with GitHub, GitLab, Bitbucket, public and private repos.\n\n---\n\n## 🔐 Private Repos\n\nUse a personal access token with read-only contents permission. Works with GitHub, GitLab and Bitbucket:\n\n```sh\nnpx gitpick https://\u003ctoken\u003e@github.com/owner/repo\nnpx gitpick https://\u003ctoken\u003e@gitlab.com/owner/repo\nnpx gitpick https://\u003ctoken\u003e@bitbucket.org/owner/repo\n```\n\nOr use environment variables (recommended for CI):\n\n```sh\nexport GITHUB_TOKEN=ghp_xxxx    # or GH_TOKEN\nexport GITLAB_TOKEN=glpat-xxxx\nexport BITBUCKET_TOKEN=xxxx\n\nnpx gitpick owner/private-repo  # token is picked up automatically\n```\n\nCreate a GitHub token 👉 [here](https://github.com/settings/personal-access-tokens/new) with `repo -\u003e contents: read-only` permission.\n\n---\n\n## 📋 Config File\n\nCreate a `.gitpick.json` or `.gitpick.jsonc` in your project to pick multiple files/folders in one command:\n\n```jsonc\n// .gitpick.jsonc\n[\n  // clone a repo without .git\n  \"owner/repo\",\n  \"https://github.com/owner/repo\",\n  // clone a folder aka tree\n  \"owner/repo/tree/main/path/to/folder\",\n  \"https://github.com/owner/repo/tree/main/path/to/folder\",\n  // clone a file aka blob\n  \"owner/repo/blob/main/path/to/file\",\n  \"https://github.com/owner/repo/blob/main/path/to/file\",\n  // clone a branch\n  \"owner/repo -b canary\",\n  \"https://github.com/owner/repo -b canary\",\n  \"owner/repo/tree/canary\",\n  \"https://github.com/owner/repo/tree/canary\",\n  // clone a commit SHA\n  \"owner/repo -b cc8e93\",\n  \"https://github.com/owner/repo/commit/cc8e93\",\n  // clone submodules\n  \"owner/repo -r\",\n  \"https://github.com/owner/repo -r\",\n  // clone a private repo\n  \"https://\u003ctoken\u003e@github.com/owner/repo\",\n  // GitLab\n  \"https://gitlab.com/owner/repo\",\n  \"https://gitlab.com/owner/repo/-/tree/main/path/to/folder\",\n  // Bitbucket\n  \"https://bitbucket.org/owner/repo\",\n  \"https://bitbucket.org/owner/repo/src/main/path/to/folder\",\n]\n```\n\nThen just run:\n\n```sh\nnpx gitpick\n```\n\nEach entry follows the same `\u003curl\u003e [target]` syntax as the CLI. All entries are cloned with `-o` (overwrite) by default.\n\n---\n\n## 📦 Install Globally (Optional)\n\n```sh\nnpm install -g gitpick\ngitpick \u003curl/shorthand\u003e [target] [options]\n```\n\n---\n\n## 🌍 Used By\n\n- **Major:** [Storybook](https://github.com/storybookjs/storybook), [TanStack Router](https://github.com/TanStack/router), [ElectricSQL](https://github.com/electric-sql/electric), [Alchemy](https://github.com/alchemy-run/alchemy), [Porto](https://github.com/ithacaxyz/porto), [oidc-spa](https://github.com/keycloakify/oidc-spa), [Fidely UI](https://github.com/fidely-ui/fidely-ui)\n- **Other:** [hono-better-auth](https://github.com/LovelessCodes/hono-better-auth), [vite-hono-ssr](https://github.com/Mirza-Glitch/vite-hono-ssr), [tanstack-start-cf](https://github.com/depsimon/tanstack-start-cf), [constructa-starter-min](https://github.com/instructa/constructa-starter-min), [tanstack-starter](https://github.com/enesdir/tanstack-starter), [react-shadcn-starter](https://github.com/aliadelelroby/react-shadcn-starter), [open-store](https://github.com/bang0711/open-store)\n\n---\n\n## 🛠 More Tools\n\nCheck out more projects at [github.com/nrjdalal](https://github.com/nrjdalal)\n\n## 🔗 Related Projects\n\n- [tiged](https://github.com/tiged/tiged) - community driven fork of degit\n- [giget](https://github.com/unjs/giget) - alternative approach\n\n[![Star History Chart](https://api.star-history.com/svg?repos=nrjdalal/gitpick,tiged/tiged,unjs/giget\u0026type=timeline\u0026logscale\u0026legend=top-left)](https://www.star-history.com/#nrjdalal/gitpick\u0026tiged/tiged\u0026unjs/giget\u0026type=timeline\u0026logscale\u0026legend=top-left)\n\n## 🤝 Contributing\n\nContributions welcome - any help is appreciated!\n\n- Fork the repo and create a branch (use descriptive names, e.g. feat/\u003cname\u003e or fix/\u003cname\u003e).\n- Make your changes, add tests if applicable, and run the checks:\n  - bun install\n  - bun test\n- Follow the existing code style and commit message conventions (use conventional commits: feat, fix, docs, chore).\n- Open a PR describing the change, motivation, and any migration notes; link related issues.\n- For breaking changes or large features, open an issue first to discuss the approach.\n- By contributing you agree to the MIT license and the project's Code of Conduct.\n\nThank you for helping improve GitPick!\n\n## 📄 License\n\nMIT – [LICENSE](LICENSE)\n","funding_links":["https://github.com/sponsors/nrjdalal"],"categories":["TypeScript","Clone a Template"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrjdalal%2Fgitpick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnrjdalal%2Fgitpick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnrjdalal%2Fgitpick/lists"}