███ █████ █████ ███ █████
░░░ ░░███ ░░███ ░░░ ░░███
███████ ████ ███████ ░███ █████ ████ ███████
███░░███░░███ ░░░███░ ░███░░███ ░░███ ░░░███░
░███ ░███ ░███ ░███ ░██████░ ░███ ░███
░███ ░███ ░███ ░███ ███ ░███░░███ ░███ ░███ ███
░░███████ █████ ░░█████ ████ █████ █████ ░░█████
░░░░░███░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░
███ ░███
░░██████
░░░░░░
Set up a git repo the way you actually work — one guided flow for hooks, .gitignore, .gitattributes, and git config. One binary, no Node.js, no Python, no runtime dependencies.
Demo

Features
- 🪄 Guided repo setup — Configure hooks,
.gitignore,.gitattributes, and git config in one interactive flow. - 🔁 Clone and bootstrap — Clone a repo and drop straight into the setup wizard.
- 🧰 Hook management — Install, list, show, or remove built-in hooks, or wire up your own command.
- 🧩 Ignore and attribute presets — Browse built-in and gitignore.io templates, then apply line-ending or binary presets.
- ⚙️ Curated git config — Apply practical presets like auto-upstream, autocorrect, histogram diffs, zdiff3, rerere, and delta pager setup.
- 📦 Single binary — No Node.js, no Python, no extra runtime.
Installation
Quick install (recommended)
Linux / macOS:
|
Windows (PowerShell):
irm https://raw.githubusercontent.com/UniverLab/gitkit/main/scripts/install.ps1 | iex
Via cargo
Available on crates.io.
GitHub Releases
Check the Releases page for precompiled binaries (Linux x86_64, macOS x86_64/ARM64, Windows x86_64).
Uninstall
Linux / macOS:
Windows (PowerShell):
Remove-Item "$env:LOCALAPPDATA\gitkit\gitkit.exe" -Force
Quick Start
Clone and configure a repo in one command:
Or configure an existing repo:
Or use commands directly:
gitkit init
Interactive wizard that guides you through configuring a repo step by step.
- Hooks — built-ins pre-selected, or add a custom command
.gitignore— filterable search across all gitignore.io templates + built-ins.gitattributes— line endings and binary file presets- Git config — 6 individual options, recommended ones pre-selected
Automatically initializes a git repository if one doesn't exist:
gitkit clone
Clone a repository and automatically run gitkit init to configure it.
Usage:
Arguments:
<REPOSITORY>— Repository URL or path to clone[DIRECTORY]— Target directory (defaults to repository name)
Options:
-b, --branch <BRANCH>— Clone specific branch (defaults to repository default)-h, --help— Print help
Examples:
# Clone and auto-configure
# Clone specific branch
# Clone to custom directory
The wizard runs automatically after cloning, allowing you to configure hooks, .gitignore, .gitattributes, and git config in one workflow.
Commands
Hooks
| Command | Description |
|---|---|
gitkit hooks add <builtin> |
Install a built-in hook (hook name inferred) |
gitkit hooks add <hook> <command> |
Install a custom shell command as a hook |
gitkit hooks list |
List installed hooks |
gitkit hooks list --available |
Show all built-in hooks with descriptions |
gitkit hooks remove <hook> |
Remove an installed hook |
gitkit hooks show <hook> |
Print hook content |
Ignore
| Command | Description |
|---|---|
gitkit ignore add <templates> |
Generate/merge .gitignore via gitignore.io |
gitkit ignore list [filter] |
List available templates |
Attributes
| Command | Description |
|---|---|
gitkit attributes init |
Apply line endings preset to .gitattributes |
Config
| Command | Description |
|---|---|
gitkit config apply defaults |
push.autoSetupRemote, help.autocorrect, diff.algorithm |
gitkit config apply advanced |
merge.conflictstyle zdiff3, rerere.enabled |
gitkit config apply delta |
core.pager delta (requires cargo) |
Built-in Hooks
Run gitkit hooks list --available to see these without leaving the terminal.
| Name | Hook | Description |
|---|---|---|
conventional-commits |
commit-msg |
Validates Conventional Commits format |
no-secrets |
pre-commit |
Detects common secret patterns in staged changes |
branch-naming |
pre-commit |
Validates branch name matches convention |
Built-ins are embedded in the binary — no network required.
Global Flags
| Flag | Description |
|---|---|
--yes, -y |
Skip confirmation prompts |
--force, -f |
Overwrite existing files |
--dry-run |
Preview changes without applying |
License
MIT
Support
- 📖 GitHub Issues — Report bugs or request features
- 💬 Discussions — Ask questions
- 🐦 Twitter: @JheisonMB