# ============================================
# 1. 默认所有文件都不是文本（禁用转换）
# ============================================
* -text

# ============================================
# 2. 明确指定文本文件类型
# ============================================
# 源码文件
*.c        text eol=lf
*.cpp      text eol=lf
*.h        text eol=lf
*.hpp      text eol=lf
*.js       text eol=lf
*.ts       text eol=lf
*.py       text eol=lf
*.rb       text eol=lf
*.go       text eol=lf
*.java     text eol=lf
*.kt       text eol=lf
*.swift    text eol=lf

# 配置文件
*.json     text eol=lf
*.yaml     text eol=lf
*.yml      text eol=lf
*.toml     text eol=lf
*.xml      text eol=lf
*.properties text eol=lf

# 脚本文件
*.sh       text eol=lf
*.bash     text eol=lf
*.zsh      text eol=lf
*.ps1      text eol=lf

# 文档
*.md       text eol=lf
*.txt      text eol=lf
*.rst      text eol=lf
*.adoc     text eol=lf

# Web 前端
*.html     text eol=lf
*.htm      text eol=lf
*.css      text eol=lf
*.scss     text eol=lf
*.sass     text eol=lf
*.vue      text eol=lf
*.jsx      text eol=lf
*.tsx      text eol=lf

# ============================================
# 3. 特殊文本文件（如需保留 CRLF，请单独设置）
# ============================================
# Windows 批处理文件必须使用 CRLF
*.bat      text eol=crlf
*.cmd      text eol=crlf

# ============================================
# 4. 二进制文件（禁止任何转换，不进行 diff）
# ============================================
# 图片
*.png      binary
*.jpg      binary
*.jpeg     binary
*.gif      binary
*.bmp      binary
*.ico      binary
*.webp     binary
# SVG 虽是文本，但通常作为二进制处理以避免 diff 混乱
*.svg      binary    

# 压缩包
*.zip      binary
*.tar      binary
*.gz       binary
*.bz2      binary
*.7z       binary
*.rar      binary

# 可执行文件
*.exe      binary
*.dll      binary
*.so       binary
*.dylib    binary
*.class    binary
*.jar      binary
*.war      binary

# 媒体文件
*.mp3      binary
*.mp4      binary
*.mov      binary
*.wav      binary

# 文档
*.pdf      binary
*.doc      binary
*.docx     binary
*.xls      binary
*.xlsx     binary
*.ppt      binary
*.pptx     binary

# 数据库文件
*.db       binary
*.sqlite   binary

# 其他
# 依赖锁定文件，通常为二进制或不应改动
*.lock     binary
*.pyc      binary
*.pyo      binary