███ █████ █████ ███ █████
░░░ ░░███ ░░███ ░░░ ░░███
███████ ████ ███████ ░███ █████ ████ ███████
███░░███░░███ ░░░███░ ░███░░███ ░░███ ░░░███░
░███ ░███ ░███ ░███ ░██████░ ░███ ░███
░███ ░███ ░███ ░███ ███ ░███░░███ ░███ ░███ ███
░░███████ █████ ░░█████ ████ █████ █████ ░░█████
░░░░░███░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░
███ ░███
░░██████
░░░░░░
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. - 📊 Status overview — See what's currently configured with
gitkit status. - 🔁 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 with
--globalor--localscope, with idempotency detection. - 💾 Save & reuse builds — Save configurations and apply them to any project with one command.
- 📦 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
Run the wizard (no arguments needed):
Or explicitly:
Clone and configure a repo in one command:
Or use commands directly:
Documentation
Full documentation lives in docs/: installation, quick start,
hooks, ignore & attributes, config presets, builds and the complete CLI reference.
gitkit status
Show what's currently configured in your repo and globally.
Output example:
Hooks:
✓ conventional-commits (commit-msg)
✓ custom: pre-push → "cargo test"
.gitignore:
✓ 14 patterns
.gitattributes:
✓ line-endings (eol=lf)
Git config (local):
(none)
Git config (global):
✓ push.autoSetupRemote = true
✓ help.autocorrect = prompt
✓ diff.algorithm = histogram
gitkit init
Interactive wizard that guides you through configuring a repo step by step. Shows what's already configured and allows removal.
- Hooks — shows installed hooks, pre-selects them, allows removal
.gitignore— filterable search across all gitignore.io templates + built-ins.gitattributes— line endings and binary file presets- Git config — shows current values, allows removal
- Custom hooks — interactive picker for hook type selection
Run without arguments or explicitly:
# or
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) |
gitkit config show |
Show current git config values |
Scope options:
--global— Apply to global git config (all repos)--local— Apply to local repo config only- Default:
--localif in a repo,--globalotherwise
Idempotency:
Configs already set with the same value show (already set) and are skipped.
)
)
)
Build
Save and reuse configurations across projects.
| Command | Description |
|---|---|
gitkit build list |
List saved builds |
gitkit build save <name> |
Save current repo config as a build |
gitkit build apply <name> |
Apply a saved build |
gitkit build delete <name> |
Delete a saved build |
Example:
# Save current configuration
# Apply to another project
Builds are saved to ~/.gitkit/builds/ as TOML files.
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
An experiment of UniverLab — an open computational laboratory. Made with ❤️ by JheisonMB