Skip to content

Git ​

Global Git configuration symlinked to ~/.gitconfig.

Location ​

FileSymlinked to
config/git/.gitconfig~/.gitconfig
config/git/ignore~/.config/git/ignore

Global ignore ​

~/.config/git/ignore is git's default global excludes file (XDG location, no core.excludesfile entry needed). It ignores files across all repositories:

PatternReason
**/.claude/settings.local.jsonClaude Code per-project local overrides, never committed
**/.claude/.cc-writes/Claude Code internal state, never committed

Key settings ​

Identity ​

user.useConfigOnly = true: Git never guesses user.name / user.email from the host. Set them in ~/.gitconfig.local (see Machine-specific overrides), otherwise git commit stops and asks for an identity.

Push & pull ​

SettingValueDescription
push.defaultsimplePush current branch to its upstream
pull.rebasetrueRebase instead of merge on pull
branch.autosetuprebasealwaysAuto-rebase on new tracking branches

Signing ​

Commits and tags are signed with an SSH key.

SettingValue
commit.gpgsigntrue
tag.gpgSigntrue
gpg.formatssh
gpg.ssh.allowedSignersFile~/.ssh/allowed_signers

The signing key itself (user.signingkey) is not in the tracked file: set it in ~/.gitconfig.local.

Credentials & connection ​

SettingValueDescription
credential.helpermanagerGit Credential Manager handles HTTPS auth¹
credential.https://dev.azure.com.useHttpPathtrueOne credential per Azure DevOps repository path
url.https://github.com/.insteadOfgit@github.com:GitHub SSH remotes are rewritten to HTTPS, so GCM handles them too
rerere.enabledtrueRemember resolved conflicts
color.uitrueColor terminal output

¹ Git Credential Manager (git-credential-manager) is installed by the base profile — see macOS and Debian. The empty helper = line written before it clears any helper inherited from a system-level config.

Defaults ​

SettingValue
init.defaultBranchmain
status.showUntrackedFilesall
diff.wordRegex.
diff.toolmeld

Machine-specific overrides ​

Settings that differ per machine (identity, signing key, etc.) go in ~/.gitconfig.local, which is not tracked by git.

ini
# ~/.gitconfig.local
[user]
  name = Your Name
  email = you@example.com
  signingkey = ~/.ssh/id_ed25519.pub

This file is included at the bottom of .gitconfig:

ini
[include]
  path = ~/.gitconfig.local