← All Steps

Git Configuration

Get your git config matching ours so PRs don’t fill up with noise from different settings.

Basic Config

git config --global user.name "Your Name"
git config --global user.email "your.name@gremlin.group"

# Default branch name
git config --global init.defaultBranch main

# Better diffs
git config --global diff.algorithm histogram

# Auto-prune stale remote branches on fetch
git config --global fetch.prune true

# Rebase by default on pull (avoids merge commits)
git config --global pull.rebase true

Commit Signing

We sign commits with SSH keys via 1Password. This verifies you are who you say you are, with no manual key management.

See the Security Practices guide for full 1Password SSH agent and commit signing setup. The short version:

git config --global gpg.format ssh
git config --global gpg.ssh.program "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"
git config --global user.signingkey "ssh-ed25519 AAAA..."  # your public key from 1Password
git config --global commit.gpgsign true
git config --global tag.gpgsign true

Add your public key to GitHub SSH Keys as both an Authentication Key and a Signing Key. Your commits will show as “Verified” on GitHub.

Branch Conventions

We follow Gitflow branching. Branch names must follow this pattern:

PrefixPurposeExample
feature/New functionalityfeature/project-search
bugfix/Non-urgent fixesbugfix/nav-overflow
hotfix/Urgent production fixeshotfix/auth-timeout
release/Release preparationrelease/2.1.0

Never commit directly to main or develop.

Commit Messages

We use Conventional Commits. Every commit message follows:

<type>(<scope>): <description>

Install prek to enforce this with git hooks:

brew install prek

Useful Git Config

# Show branch in prompt (if not using Starship)
git config --global branch.sort -committerdate

# Better log format
git config --global alias.lg "log --graph --oneline --decorate -20"

# Shortcut for amending
git config --global alias.amend "commit --amend --no-edit"

# See what changed in last commit
git config --global alias.last "log -1 --stat"

.gitignore Global

Create a global gitignore for OS and editor files:

git config --global core.excludesfile ~/.gitignore_global

Add to ~/.gitignore_global:

.DS_Store
Thumbs.db
*.swp
*.swo
*~
.idea/
.vscode/
*.iml

Next Steps

Continue to Kubernetes Tooling to set up your cluster access.