# Normalize line endings
* text=auto

# Markdown files
*.md text
*.markdown text

# JSON files
*.json text
*.json diff=json

# JavaScript files
*.js text
*.js diff=javascript

# CSS files
*.css text
*.css diff=css

# HTML files
*.html text
*.html diff=html

# YAML files
*.yml text
*.yaml text

# Images (binary)
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.svg text

# Web fonts (binary)
*.woff binary
*.woff2 binary
*.ttf binary
*.otf binary

# Lock files (text but not normalized)
package-lock.json -text
yarn.lock -text

# Ignore minified files for diffs
*.min.js binary
*.min.css binary

# Exclude certain directories from diff
node_modules/ -diff
dist/ -diff

# Shell scripts
*.sh text eol=lf

#Explanation of the Key Entries:

text=auto: Ensures consistent end-of-line normalization (CRLF for Windows, LF for Unix-based systems).

Language-specific diff settings: Helps Git understand how to better display differences for files like JSON, JavaScript, or CSS.

Binary files: Ensures that image and font files are treated as binary, avoiding unintended modifications or corruption.

Lock files: Prevents normalization of files like package-lock.json or yarn.lock which should remain as-is.

Exclude directories: Prevents Git from processing changes in directories like node_modules or dist which contain generated files.

