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:
| Prefix | Purpose | Example |
|---|---|---|
feature/ | New functionality | feature/project-search |
bugfix/ | Non-urgent fixes | bugfix/nav-overflow |
hotfix/ | Urgent production fixes | hotfix/auth-timeout |
release/ | Release preparation | release/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.