Running gitkit with no command starts the interactive wizard.
Core
Command
Description
gitkit / gitkit init
Interactive wizard to configure the repo
gitkit status
Show current configuration status, including per-hook health
gitkit status --repair
Set the executable bit on every dormant hook
gitkit status --strict
Exit non-zero if any hook is dormant (for CI)
gitkit status --global
Machine-wide: every repo gitkit has touched, health read from disk
gitkit status --global --prune
Also remove registry entries whose repo no longer exists
gitkit status --scan <DIR>
Discover repos with gitkit hooks under DIR and register them
gitkit clone <repo> [dir]
Clone a repository and run the wizard
gitkit clone -b <branch> <repo>
Clone a specific branch
Hooks
Command
Description
gitkit hooks add <builtin>
Install a built-in hook (hook type 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
Lock
Command
Description
gitkit lock
Block commits until gitkit unlock
gitkit lock --reason <msg>
Set the message shown on a blocked commit
gitkit lock --timeout <duration>
Auto-expire the lock, e.g. 30m, 2h
gitkit lock --push
Also block pushes (in addition to commits)
gitkit lock --all
Block both commits and pushes
gitkit lock status
Show whether a lock is active, its reason and expiry
gitkit lock status --json
Show lock status as machine-readable JSON with exit code signal
gitkit unlock
Remove the lock and restore any backed-up hook
git commit --no-verify and git push --no-verify bypass the lock — see Lock for why
that is accepted rather than defended against.
Uninstall
Command
Description
gitkit uninstall
Remove gitkit hooks from every repository it has touched
gitkit uninstall --data
Also remove local state under ~/.gitkit (builds, registry)
gitkit uninstall --yes
Skip the confirmation prompt
gitkit uninstall --dry-run
Print what would be done without changing anything
By default, gitkit uninstall lists every repository in the registry, shows what hooks are
installed, and asks for confirmation before removing anything. It restores any hand-written hook
that gitkit had absorbed when it first installed its dispatcher. The gitkit binary itself is never
removed — see Installation for how to remove it.
Scope: --global (all repos) or --local (current repo). Default is
--local inside a repo, --global otherwise.
Builds
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
Update
Command
Description
gitkit update
Fetch the latest stable release and ask before replacing the running binary
gitkit update --check
Report only: exit 0 current, 1 update available, 2 check could not complete; changes nothing
gitkit update --yes
Skip the confirmation prompt
Exit codes (both forms): 0 up to date or nothing installed, 1 an
update is available (--check only), and 2 the update check could not
complete — network, DNS, TLS, an HTTP error (≥ 400) or an unparsable
response — after one stderr line naming the cause.
gitkit update is explicit: it always asks first and the answer defaults to
No, so gitkit never rewrites itself behind your back. Drafts, prereleases
and non-semver tags are skipped, the downloaded asset is SHA256-verified
against the release’s SHA256SUMS.txt when one ships, and the binary is
swapped atomically (same-directory temporary file plus rename). A cargo-managed
install is left alone — the command prints
installed with cargo — run: cargo install --force gitkit. Requests honour
HTTPS_PROXY, HTTP_PROXY and NO_PROXY (upper and lower case), the same way
the other UniverLab tools do, and version lines print no v prefix
(gitkit 0.0.1 → 0.6.0). The background check (GITKIT_NO_UPDATE_CHECK) only
prints a one-line notice pointing at gitkit update and never installs.