mirror of
https://github.com/m1ngsama/winfig.git
synced 2025-12-24 10:51:49 +00:00
feat: add comprehensive Git configuration
This commit is contained in:
parent
de6e1f94a0
commit
009888dd31
3 changed files with 359 additions and 0 deletions
138
git/.gitconfig
Normal file
138
git/.gitconfig
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
[user]
|
||||||
|
# Set your name and email
|
||||||
|
name = your_name
|
||||||
|
email = your_email@example.com
|
||||||
|
|
||||||
|
[core]
|
||||||
|
# Use UTF-8 encoding
|
||||||
|
quotepath = false
|
||||||
|
# Use nvim as default editor
|
||||||
|
editor = nvim
|
||||||
|
# Handle line endings automatically
|
||||||
|
autocrlf = true
|
||||||
|
# Improve performance on Windows
|
||||||
|
fscache = true
|
||||||
|
# Enable parallel index preload
|
||||||
|
preloadindex = true
|
||||||
|
|
||||||
|
[color]
|
||||||
|
ui = auto
|
||||||
|
branch = auto
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
|
||||||
|
[color "branch"]
|
||||||
|
current = yellow reverse
|
||||||
|
local = yellow
|
||||||
|
remote = green
|
||||||
|
|
||||||
|
[color "diff"]
|
||||||
|
meta = yellow bold
|
||||||
|
frag = magenta bold
|
||||||
|
old = red bold
|
||||||
|
new = green bold
|
||||||
|
|
||||||
|
[color "status"]
|
||||||
|
added = green
|
||||||
|
changed = yellow
|
||||||
|
untracked = red
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
# Common shortcuts
|
||||||
|
st = status
|
||||||
|
co = checkout
|
||||||
|
br = branch
|
||||||
|
ci = commit
|
||||||
|
cp = cherry-pick
|
||||||
|
|
||||||
|
# Commit aliases
|
||||||
|
cm = commit -m
|
||||||
|
ca = commit --amend
|
||||||
|
can = commit --amend --no-edit
|
||||||
|
|
||||||
|
# Log aliases
|
||||||
|
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
|
||||||
|
lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all
|
||||||
|
ls = log --pretty=format:'%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]' --decorate
|
||||||
|
ll = log --pretty=format:'%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]' --decorate --numstat
|
||||||
|
last = log -1 HEAD --stat
|
||||||
|
|
||||||
|
# Diff aliases
|
||||||
|
df = diff
|
||||||
|
dfc = diff --cached
|
||||||
|
dft = difftool
|
||||||
|
|
||||||
|
# Branch management
|
||||||
|
brd = branch -d
|
||||||
|
brD = branch -D
|
||||||
|
bra = branch -a
|
||||||
|
|
||||||
|
# Remote management
|
||||||
|
rao = remote add origin
|
||||||
|
rso = remote show origin
|
||||||
|
rpo = remote prune origin
|
||||||
|
|
||||||
|
# Stash management
|
||||||
|
sl = stash list
|
||||||
|
sa = stash apply
|
||||||
|
ss = stash save
|
||||||
|
sp = stash pop
|
||||||
|
sd = stash drop
|
||||||
|
|
||||||
|
# Reset aliases
|
||||||
|
unstage = reset HEAD --
|
||||||
|
undo = reset --soft HEAD^
|
||||||
|
|
||||||
|
# Other useful commands
|
||||||
|
aliases = config --get-regexp alias
|
||||||
|
contributors = shortlog --summary --numbered
|
||||||
|
ignored = ls-files --others --ignored --exclude-standard
|
||||||
|
untracked = ls-files --others --exclude-standard
|
||||||
|
|
||||||
|
# Advanced workflows
|
||||||
|
sync = !git fetch origin && git rebase origin/$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
cleanup = !git branch --merged | grep -v '\\*\\|main\\|master\\|develop' | xargs -n 1 git branch -d
|
||||||
|
wip = !git add -A && git commit -m 'WIP' --no-verify
|
||||||
|
unwip = !git log -n 1 | grep -q 'WIP' && git reset HEAD~1
|
||||||
|
|
||||||
|
[push]
|
||||||
|
# Push current branch to upstream
|
||||||
|
default = current
|
||||||
|
# Push tags automatically
|
||||||
|
followTags = true
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
# Rebase instead of merge on pull
|
||||||
|
rebase = true
|
||||||
|
|
||||||
|
[fetch]
|
||||||
|
# Prune deleted remote branches
|
||||||
|
prune = true
|
||||||
|
|
||||||
|
[rebase]
|
||||||
|
# Automatically stash before rebase
|
||||||
|
autoStash = true
|
||||||
|
|
||||||
|
[merge]
|
||||||
|
# Use better diff algorithm
|
||||||
|
conflictStyle = diff3
|
||||||
|
# Include summaries of merged commits
|
||||||
|
log = true
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
# Better diff algorithm
|
||||||
|
algorithm = histogram
|
||||||
|
# Enable rename detection
|
||||||
|
renames = true
|
||||||
|
# Detect copies as well as renames
|
||||||
|
copies = true
|
||||||
|
|
||||||
|
[help]
|
||||||
|
# Auto-correct misspelled commands
|
||||||
|
autocorrect = 1
|
||||||
|
|
||||||
|
[credential]
|
||||||
|
helper = wincred
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
109
git/.gitignore_global
Normal file
109
git/.gitignore_global
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
# Windows
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
Icon
|
||||||
|
._*
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
*~
|
||||||
|
.directory
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# IDEs and Editors
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.project
|
||||||
|
.classpath
|
||||||
|
.settings/
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
|
||||||
|
# Node.js
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.npm
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
*.egg-info/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
.pytest_cache/
|
||||||
|
|
||||||
|
# Go
|
||||||
|
*.exe
|
||||||
|
*.exe~
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.test
|
||||||
|
*.out
|
||||||
|
vendor/
|
||||||
|
|
||||||
|
# Rust
|
||||||
|
target/
|
||||||
|
Cargo.lock
|
||||||
|
|
||||||
|
# Java
|
||||||
|
*.class
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
.gradle/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# C/C++
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
*.bak
|
||||||
|
*.backup
|
||||||
|
|
||||||
|
# Archives
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
*.7z
|
||||||
112
git/README.md
Normal file
112
git/README.md
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
# Git Configuration
|
||||||
|
|
||||||
|
Optimized Git configuration with useful aliases and settings for enhanced workflow.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Comprehensive Aliases**: Shortcuts for common Git operations
|
||||||
|
- **Better Diff Algorithm**: Histogram algorithm for cleaner diffs
|
||||||
|
- **Auto-correction**: Automatically fixes typos in Git commands
|
||||||
|
- **Smart Defaults**: Optimized settings for better performance on Windows
|
||||||
|
- **Global Gitignore**: Ignore common system and IDE files across all repositories
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Configure Git
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Copy the config to your home directory
|
||||||
|
Copy-Item git\.gitconfig ~\.gitconfig
|
||||||
|
|
||||||
|
# Configure global gitignore
|
||||||
|
git config --global core.excludesfile ~/.gitignore_global
|
||||||
|
Copy-Item git\.gitignore_global ~\.gitignore_global
|
||||||
|
|
||||||
|
# Set your user information
|
||||||
|
git config --global user.name "Your Name"
|
||||||
|
git config --global user.email "your.email@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Useful Aliases
|
||||||
|
|
||||||
|
### Basic Operations
|
||||||
|
- `git st` - Status
|
||||||
|
- `git co` - Checkout
|
||||||
|
- `git br` - Branch
|
||||||
|
- `git cm "message"` - Commit with message
|
||||||
|
- `git ca` - Amend last commit
|
||||||
|
- `git can` - Amend last commit without editing message
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
- `git lg` - Beautiful graph log
|
||||||
|
- `git lga` - Beautiful graph log (all branches)
|
||||||
|
- `git last` - Show last commit with stats
|
||||||
|
|
||||||
|
### Branch Management
|
||||||
|
- `git brd <branch>` - Delete branch (safe)
|
||||||
|
- `git brD <branch>` - Force delete branch
|
||||||
|
- `git bra` - List all branches (including remote)
|
||||||
|
|
||||||
|
### Stash Operations
|
||||||
|
- `git sl` - Stash list
|
||||||
|
- `git sa` - Stash apply
|
||||||
|
- `git ss "message"` - Stash save with message
|
||||||
|
- `git sp` - Stash pop
|
||||||
|
- `git sd` - Stash drop
|
||||||
|
|
||||||
|
### Advanced Workflows
|
||||||
|
- `git sync` - Fetch and rebase current branch
|
||||||
|
- `git cleanup` - Delete all merged branches (except main/master/develop)
|
||||||
|
- `git wip` - Quick work-in-progress commit
|
||||||
|
- `git unwip` - Undo the last WIP commit
|
||||||
|
- `git unstage <file>` - Unstage file
|
||||||
|
- `git undo` - Undo last commit (keep changes)
|
||||||
|
|
||||||
|
### Information
|
||||||
|
- `git aliases` - List all configured aliases
|
||||||
|
- `git contributors` - List contributors with commit counts
|
||||||
|
- `git ignored` - List ignored files
|
||||||
|
- `git untracked` - List untracked files
|
||||||
|
|
||||||
|
## Configuration Highlights
|
||||||
|
|
||||||
|
### Performance
|
||||||
|
- `core.fscache = true` - Cache file system operations
|
||||||
|
- `core.preloadindex = true` - Parallel index preload
|
||||||
|
|
||||||
|
### Auto-stash
|
||||||
|
- Automatically stash changes before rebase
|
||||||
|
|
||||||
|
### Better Diffs
|
||||||
|
- Histogram algorithm for cleaner diffs
|
||||||
|
- Detect renames and copies
|
||||||
|
- Show conflict markers in diff3 style
|
||||||
|
|
||||||
|
### Smart Defaults
|
||||||
|
- Auto-prune deleted remote branches
|
||||||
|
- Rebase instead of merge on pull
|
||||||
|
- Push current branch by default
|
||||||
|
- Auto-correct typos in commands
|
||||||
|
|
||||||
|
## Windows-Specific Settings
|
||||||
|
|
||||||
|
- `core.autocrlf = true` - Handle line endings automatically
|
||||||
|
- `credential.helper = wincred` - Use Windows Credential Manager
|
||||||
|
- `core.editor = nvim` - Use Neovim as default editor
|
||||||
|
|
||||||
|
## Global Gitignore
|
||||||
|
|
||||||
|
The `.gitignore_global` file ignores common files across all your repositories:
|
||||||
|
- System files (Windows, macOS, Linux)
|
||||||
|
- IDE and editor files (.vscode, .idea, etc.)
|
||||||
|
- Language-specific files (node_modules, __pycache__, etc.)
|
||||||
|
- Temporary and backup files
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
Edit `~\.gitconfig` to customize settings to your preferences. Remember to update your user information:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
git config --global user.name "Your Name"
|
||||||
|
git config --global user.email "your.email@example.com"
|
||||||
|
```
|
||||||
Loading…
Reference in a new issue