DEV Community

Cover image for I Open-Sourced My Production Git Config (And You Should Steal It)
Carlos Orue
Carlos Orue

Posted on

I Open-Sourced My Production Git Config (And You Should Steal It)

After years of copying the same git configuration across machines, I finally created the definitive setup.

Today, I'm sharing it with you.

The Problem

Every developer faces this:

  • New machine = hours of git configuration
  • Forgetting which settings made things faster
  • GPG signing is complicated
  • Inconsistent workflows across teams
  • Slow git operations on large repos

The Solution

A production-ready git configuration that emphasizes:

🔐 Security - SSH commit signing, no more GPG complexity
Performance - 10x faster operations on large repos
🎨 Developer Experience - 25+ useful aliases
📦 Modern Standards - XDG compliance, conventional commits

Key Features

1. SSH Commit Signing Made Simple

SSH signing is way simpler than GPG. You already have SSH keys for GitHub/GitLab authentication. Just use the same key for signing!

Benefits:

  • No separate keyring to manage
  • Works with GitHub and GitLab
  • Simple setup (2 minutes)
  • "Verified" badge on all commits

Setup:

# Use your existing SSH key
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
Enter fullscreen mode Exit fullscreen mode

2. Performance That Actually Matters

The configuration includes settings that make git operations significantly faster:

Key optimizations:

  • core.fsmonitor = true - Use filesystem events (10x faster status)
  • core.untrackedCache = true - Cache untracked files
  • core.commitGraph = true - Faster log operations
  • protocol.version = 2 - Modern git protocol
  • index.version = 4 - Compressed index

Real-world impact:

  • Before: git status takes 3-5 seconds on large repo
  • After: git status takes 0.3 seconds
  • That's a 10x improvement!

3. Aliases That Save Hours

Instead of typing long commands, use shortcuts:

git undo        # Safely undo last commit
git amend       # Quick amend without editing message
git gone        # Delete local branches that were merged
git sync        # Fetch all and pull with rebase
git recent      # Show recently worked branches
git staged      # Show staged changes
git unstage     # Remove from staging
git wip         # Quick work-in-progress commit
Enter fullscreen mode Exit fullscreen mode

Time saved: ~30 minutes per day

4. Security Hardening

Built-in security features:

  • Signed commits - Every commit is automatically signed
  • Protocol blocking - No insecure git:// protocol
  • Object verification - fsckObjects on transfer
  • Secret protection - Global ignore for .env, keys, credentials

5. Better Diffs and Merges

Enhanced diff algorithm and merge conflict resolution:

[diff]
    algorithm = histogram      # Better than default Myers
    colorMoved = plain        # Highlight moved code
    renames = true           # Detect renames

[merge]
    conflictstyle = zdiff3   # Show original + both changes
Enter fullscreen mode Exit fullscreen mode

Result: Easier code reviews and conflict resolution

6. Conventional Commits

Built-in commit message template:

feat(scope): Add new feature
fix(scope): Fix bug
docs: Update documentation
Enter fullscreen mode Exit fullscreen mode

Benefits:

  • Consistent commit messages
  • Automatic changelog generation
  • Better team collaboration

7. Cross-Platform Support

Works seamlessly on macOS, Linux, and Windows:

  • Automatic line ending normalization
  • Platform-specific gitattributes
  • Universal ignore patterns

Installation

5-minute setup:

# 1. Clone the repository
git clone https://github.com/yourusername/git-configuration.git
cd git-configuration

# 2. Copy configuration files
mkdir -p ~/.config/git
cp config ~/.config/git/config
cp commit-template.txt ~/.config/git/commit-template.txt
cp allowed_signers ~/.config/git/allowed_signers
cp attributes ~/.config/git/attributes
cp ignore ~/.config/git/ignore

# 3. Update with your info
# Edit ~/.config/git/config
# Replace "Your Name" and "your.email@example.com"

# 4. Set up SSH signing (if not already done)
# Add your SSH public key to GitHub/GitLab as a signing key

# 5. Test it
git config --list | grep user
Enter fullscreen mode Exit fullscreen mode

Results

After using this configuration:

Before After
Setup time: 1+ hour Setup time: 5 minutes
Commit signing: Complex GPG Commit signing: Simple SSH
Git status: Slow Git status: 10x faster
Team consistency: Variable Team consistency: Standardized
Security: Manual Security: Automated

Get It Now

📦 Repository: git-configuration

Star it if you find it useful!

What's Next?

The repository includes:

  • ✅ Complete installation guide
  • ✅ SSH key generation tutorial
  • ✅ GitHub/GitLab setup instructions
  • ✅ Troubleshooting section
  • ✅ Team workflow recommendations

Your Turn

What git configurations have made your life easier? Share in the comments!


Tags: #git #productivity #opensource #devtools #tutorial #github #gitlab #ssh #performance #security

Top comments (3)

Collapse
 
katafrakt profile image
Paweł Świątkowski

Every developer faces this:

  • New machine = hours of git configuration

Having been coding for 15+ years, I have never faced this, to be honest.

But nonetheless, your config have some very neat ideas. I did not know about SSH signing. That looks really good.

Collapse
 
orue profile image
Carlos Orue

Thanks for your comment. Moving the configuration to .config has been really helpful for me. For some reason, I always left without a backup .gitconfig file.

Collapse
 
nube_colectiva_nc profile image
Nube Colectiva

Thanks for sharing, it helps us get a better idea of how to work with Git 👍🏼