Skip to content

git

Declarative git configuration. Manages your ~/.gitconfig and global gitignore from a single Lua table — no more hand-editing INI sections. Shortcuts like signing and lfs wire up multiple gitconfig sections at once, and extra lets you pass through tool-specific sections like delta or interactive.

lua
local git = require("rootbeer.git")

Example

signing wires up user.signingkey, gpg.format, commit.gpgSign, and tag.gpgSign automatically. lfs = true emits the full [filter "lfs"] section. extra passes through arbitrary gitconfig sections.

lua
git.config({
    user = {
        name = "Aarnav Tale",
        email = "aarnav@tale.me",
    },
    editor = "nvim",
    pager = "delta",
    signing = { key = "ssh-ed25519 AAAA..." },
    lfs = true,
    pull_rebase = true,
    ignores = { ".DS_Store", "._*", "*~" },
    extra = {
        delta = { features = "color-only" },
    },
})

For per-machine overrides, see Multi-Device Config.

API Reference

config(cfg)

Applies git.Config to the system. Writes a gitconfig file at cfg.path and optionally a gitignore file next to it.

editorstringoptional
Default editor for commits (e.g. "nvim").
extratable<string, table<string, boolean|string>>optional
Additional gitconfig sections (e.g. delta, interactive).
ignoresstring[]optional
Global gitignore patterns. Written next to the gitconfig.
ignores_pathstringoptional
Override path for the gitignore file. Defaults to .gitignore next to the gitconfig.
lfsbooleanoptional
Enable git-lfs filters (filter.lfs section).
merge_conflictstylestringoptional
Merge conflict style (e.g. "diff3").
pagerstringoptional
Default pager for output (e.g. "delta").
pathstringoptional
Where to write the gitconfig file. Defaults to "~/.gitconfig".
pull_rebasebooleanoptional
Pull with rebase instead of merge.
signing(git.SigningConfig)optional
Commit and tag signing. Sets user.signingkey, gpg.format, commit.gpgSign, and tag.gpgSign.
usergit.UserConfig
User identity.

git.SigningConfig

formatstringoptional
Signing format. Defaults to "ssh".
keystring
The signing key (e.g. an SSH public key).

git.UserConfig

emailstring
Email address for commits.
namestring
Full name for commits.