Overview
Git configuration controls how Git behaves. GitHub Desktop manages most Git configuration automatically, but understanding how it works helps you customize behavior when needed.Global Config
Settings that apply to all repositories
Local Config
Repository-specific settings
User Identity
Name and email for commits
Behavior Settings
Line endings, merge strategies, and more
Configuration Levels
Git configuration exists at three levels:System Level
Global Level
Local Level
Configuration Priority
When Git looks for a setting:- Local (repository-specific) - Highest priority
- Global (user-level)
- System (machine-wide) - Lowest priority
Reading Configuration
GitHub Desktop provides functions to read Git configuration:GitHub Desktop uses the
-z flag with git config for null-terminated output, which safely handles values containing newlines.Writing Configuration
Setting Values
Adding Multiple Values
Some settings can have multiple values:Removing Values
Common Git Configuration
User Identity
Default Branch
Line Endings
Editor
Merge Tool
Credential Storage
Safe Directories
Git 2.35.2+ requires repositories to be marked as “safe”:Getting Global Config Path
.gitconfig, creating it if it doesn’t exist.
Repository-Specific Configuration
Override global settings for a specific repository:Via GitHub Desktop
1
Open Repository Settings
Right-click repository > Repository Settings
2
Configure Identity
Set name and email specific to this repository
3
Additional Settings
Use terminal for advanced configuration
Via Command Line
Common Configuration Scenarios
Work vs. Personal Repositories
GPG Signing
Proxy Settings
Large File Storage (LFS)
Viewing All Configuration
List All Settings
View Specific Section
Advanced Configuration
Aliases
Create shortcuts for common commands:Diff and Merge Settings
Performance
Troubleshooting
Config Not Taking Effect
Config Not Taking Effect
If configuration changes don’t work:
- Check config priority (local > global > system)
- Verify you’re setting the right level
- Restart GitHub Desktop after changes
- Check for typos in config names
Cannot Edit Config
Cannot Edit Config
If config commands fail:
- Check file permissions on
.gitconfig - Ensure Git is in PATH
- Try running as administrator (Windows)
- Check for file locks
Reset All Configuration
Reset All Configuration
To start fresh:
Best Practices
-
Set Identity First
- Always configure
user.nameanduser.emailbefore committing - Use work email for work repositories
- Use personal email for open-source contributions
- Always configure
-
Document Custom Configuration
- Keep notes on non-standard settings
- Share team configuration in repository README
- Use consistent settings across team
-
Use .gitattributes
- Define line endings per file type
- More reliable than
core.autocrlf - Committed to repository (shared with team)
-
Review Regularly
- Audit config occasionally:
git config --list - Remove obsolete settings
- Update deprecated options
- Audit config occasionally:
-
Avoid System-Level Config
- Use global or local instead
- System config affects all users
- Can cause confusion