Gitstart is a command-line tool designed to streamline the process of creating and initializing a GitHub repository. It automates the creation of essential files like .gitignore, LICENSE.txt, and README.md, while also committing and pushing your project to GitHub with ease.
Key Features:
Automated Repository Setup: Creates a new GitHub repository, initializes it locally, adds necessary files, and pushes them in one step.
Language-Specific Configuration: Automatically detects the programming language based on project markers (e.g., go.mod, package.json) or allows manual specification for custom .gitignore generation.
Custom Committing: Supports user-defined commit messages to ensure clarity and context from the start.
Integration with Frameworks: Works seamlessly with popular framework starters like Svelte, Vite, Laravel, and Nuxi, allowing developers to skip redundant prompts using --post-framework.
CI/CD Pipeline Support: Designed for use in automated workflows, Gitstart can be configured to operate quietly or suppress specific file generations.
Cross-Platform Compatibility: Available on macOS, Linux, and Windows, with installation options via Homebrew, Scoop, Go, or package managers.
Audience & Benefit:
Ideal for developers seeking efficient workflow automation. By eliminating manual setup tasks, Gitstart enables faster project initialization and consistent repository creation across teams, saving time and reducing errors in the onboarding process. It is particularly beneficial for contributors working with multiple frameworks or those integrating GitHub CI/CD pipelines into their development workflows.
Installable via winget for ease of use, Gitstart empowers developers to focus on coding while it handles the repository setup behind the scenes.
README
Gitstart
Overview
> Gitstart creates, adds, and pushes with one line.
Gitstart automates creating a GitHub repository. It will:
Auto-detect project language and create .gitignore (or use -l to specify)
Create a license file based on your choice
Create a new repository at GitHub.com (public or private)
Create a README.md file with the repository name
Initialize a git repository (if needed)
Auto-detect the active branch from an existing repo
gitstart works seamlessly after scaffolding tools like npx sv create, npm create vite@latest, or composer create-project. Use --post-framework to skip prompts for files the framework already created, while still auto-detecting the language and branch:
-d, --directory DIRECTORY Directory name or path (use . for current directory)
-l, --language LANGUAGE Programming language for .gitignore (auto-detected if omitted)
-p, --private Create a private repository (default: public)
-P, --public Create a public repository
-b, --branch BRANCH Branch name (auto-detected from existing repo; default: main)
-m, --message MESSAGE Initial commit message (default: "Initial commit")
--description DESC Repository description
--no-license Skip LICENSE file creation
--no-readme Skip README.md creation
--post-framework Optimised for use after a framework starter
(implies --no-license --no-readme)
-n, --dry-run Show what would happen without executing
-q, --quiet Minimal output
-h, --help Show help message
version Show version
Language Auto-detection
When -l is not provided and no .gitignore exists, gitstart inspects the project directory for well-known marker files and infers the language automatically:
If multiple markers are present the first match in the table above wins. You can always override auto-detection with -l.
Branch Auto-detection
When --branch is not explicitly set and a .git directory already exists (e.g. created by a framework starter), gitstart reads the active branch from .git/HEAD and pushes to that branch instead of defaulting to main. Passing --branch explicitly always takes precedence.
Examples
Create a new repository:
gitstart -d my-project
Create with specific programming language:
gitstart -d my-python-app -l python
Create a private repository:
gitstart -d secret-project -p
Use custom commit message and branch:
gitstart -d my-app -m "First release" -b develop
Add repository description:
gitstart -d awesome-tool --description "An amazing CLI tool for developers"
Skip LICENSE and README (e.g. framework already created them):
cd my-existing-project
gitstart -d . --no-license --no-readme
Use --post-framework after a Svelte scaffold:
npx sv create my-app
cd my-app
gitstart -d . --post-framework
cd my-existing-project
gitstart -d . -l javascript --description "My existing JavaScript project"
Show version:
gitstart version
Shell Completion
Gitstart supports Tab completion in your shell. Once set up, pressing Tab after typing part of a flag or subcommand will either complete it automatically or show you the available options. For example:
gitstart --di[TAB] # completes to --directory
gitstart --[TAB] # lists all flags
gitstart [TAB] # lists all subcommands: completion, help, version
Run the setup command for your shell once, then open a new terminal (or source your config file):