███ █████ █████ ███ █████
░░░ ░░███ ░░███ ░░░ ░░███
███████ ████ ███████ ░███ █████ ████ ███████
███░░███░░███ ░░░███░ ░███░░███ ░░███ ░░░███░
░███ ░███ ░███ ░███ ░██████░ ░███ ░███
░███ ░███ ░███ ░███ ███ ░███░░███ ░███ ░███ ███
░░███████ █████ ░░█████ ████ █████ █████ ░░█████
░░░░░███░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░
███ ░███
░░██████
░░░░░░
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.
- 🪄 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.
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/UniverLab/gitkit/main/scripts/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/UniverLab/gitkit/main/scripts/install.ps1 | iexcargo install gitkitAvailable on crates.io.
Check the Releases page for precompiled binaries (Linux x86_64, macOS x86_64/ARM64, Windows x86_64).
Linux / macOS:
rm -f ~/.local/bin/gitkitWindows (PowerShell):
Remove-Item "$env:LOCALAPPDATA\gitkit\gitkit.exe" -ForceClone and configure a repo in one command:
gitkit clone https://github.com/user/repoOr configure an existing repo:
gitkit initOr use commands directly:
gitkit hooks add conventional-commits
gitkit ignore add rust,vscode,agentic
gitkit attributes init
gitkit config apply defaultsInteractive 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 initClone a repository and automatically run gitkit init to configure it.
Usage:
gitkit clone [OPTIONS] <REPOSITORY> [DIRECTORY]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
gitkit clone https://github.com/user/repo
# Clone specific branch
gitkit clone -b develop https://github.com/user/repo
# Clone to custom directory
gitkit clone https://github.com/user/repo my-projectThe wizard runs automatically after cloning, allowing you to configure hooks, .gitignore, .gitattributes, and git config in one workflow.
| 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 |
| Command | Description |
|---|---|
gitkit ignore add <templates> |
Generate/merge .gitignore via gitignore.io |
gitkit ignore list [filter] |
List available templates |
| Command | Description |
|---|---|
gitkit attributes init |
Apply line endings preset to .gitattributes |
| 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) |
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.
| Flag | Description |
|---|---|
--yes, -y |
Skip confirmation prompts |
--force, -f |
Overwrite existing files |
--dry-run |
Preview changes without applying |
MIT
- 📖 GitHub Issues — Report bugs or request features
- 💬 Discussions — Ask questions
- 🐦 Twitter: @JheisonMB
