βββ βββββ βββββ βββ βββββ
βββ βββββ βββββ βββ βββββ
βββββββ ββββ βββββββ ββββ βββββ ββββ βββββββ
βββββββββββββ βββββββ βββββββββ βββββ βββββββ
ββββ ββββ ββββ ββββ ββββββββ ββββ ββββ
ββββ ββββ ββββ ββββ βββ βββββββββ ββββ ββββ βββ
βββββββββ βββββ βββββββ ββββ βββββ βββββ βββββββ
βββββββββββββ βββββ ββββ βββββ βββββ βββββ
βββ ββββ
ββββββββ
ββββββ
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. - π 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.
- π Repository locks β Block commits and pushes during agent sessions with
gitkit lock/gitkit unlockβ useful when autonomous agents are editing the repo. - β¬οΈ Version check & self-update β Automatic check for new releases with optional auto-update; disable with
GITKIT_NO_UPDATE_CHECK. - π¦ 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" -ForceRun the wizard (no arguments needed):
gitkitOr explicitly:
gitkit initClone and configure a repo in one command:
gitkit clone https://github.com/user/repoOr use commands directly:
gitkit hooks add conventional-commits
gitkit ignore add rust,vscode,agentic
gitkit attributes init
gitkit config apply defaultsFull documentation lives in docs/: installation, quick start,
hooks, ignore & attributes, config presets, builds and the complete CLI reference.
Show what's currently configured in your repo and globally.
gitkit statusOutput 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
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:
gitkit
# or
gitkit initAutomatically initializes a git repository if one doesn't exist.
Clone 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) |
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.
$ gitkit config apply defaults --global
β push.autoSetupRemote = true (already set)
β help.autocorrect = prompt (already set)
β diff.algorithm = histogram (already set)
All configs already applied.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
gitkit build save rust-dev --description "Rust development setup"
# Apply to another project
cd /path/to/other/project
gitkit build apply rust-devBuilds are saved to ~/.gitkit/builds/ as TOML files.
Run gitkit hooks list --available to see these without leaving the terminal.
| Name | Hook | Description |
|---|---|---|
conventional-commits |
commit-msg |
Validates Conventional Commits format |
no-trailers |
commit-msg |
Rejects commit messages carrying AI attribution trailers |
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
An experiment of UniverLab β an open computational laboratory. Made with β€οΈ by JheisonMB
