.gitignore配置

备注

本文记录gemini提供的 .gitignore 模板文件,以备参考

在 macOS 环境下开发 Python、Ruby、Go、Node.js、Rust、Swift、Neovim/Vim 设置 .gitignore 配置文件 ~/.gitignore_global :

全局 .gitignore 模板: ~/.gitignore_global
cat << 'EOF' > ~/.gitignore_global
# ==============================================================================
# macOS 系统及 Finder 专有元文件
# ==============================================================================
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
.AppleDouble
.LSOverride

# Icon headers for macOS folders
Icon?

# Thumbnails and file system metadata
Files-DS_Store

# ==============================================================================
# 编辑器与 IDE 配置 (Neovim, VS Code, JetBrains, Xcode)
# ==============================================================================
# Vim / Neovim 临时文件与 Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
*.un~
Session.vim
.netrwhist

# VS Code 局部配置
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace

# JetBrains (PyCharm, RubyMine, GoLand 等)
.idea/

# Xcode / Apple 开发环境元数据与临时文件
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcworkspace/contents.xcworkspacedata
*.xcworkspace/*
.build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
*.mover-post-job-xcworkspace

# ==============================================================================
# Rust 语言环境
# ==============================================================================
# Cargo 编译与构建产物目录
/target/
target/

# Cargo 在根目录生成的构建日志与分析缓存
**/*.rs.bk
*.rlib
*.rmeta

# Cargo.lock 通常建议在 binary/app 项目中提交,但在全局层面上,
# 如果经常写小型实验/library项目,可以按需取消注释以下行:
# Cargo.lock

# ==============================================================================
# Swift / SwiftPM 开发环境
# ==============================================================================
# Swift Package Manager 构建输出目录
.build/
.swiftpm/

# CocoaPods / Carthage 产物 (如果涉及 iOS/macOS 混编)
Pods/
Frameworks/
Carthage/Build/

# Swift Playgrounds 缓存
*.playground/xcuserdata/
*.playground/timeline.xctimeline

# ==============================================================================
# Python 开发环境
# ==============================================================================
__pycache__/
*.py[cod]
*$py.class
*.so

# 虚拟环境 (Virtual Environments)
.venv/
venv/
ENV/
env/
.env

# 测试、构建与覆盖率产物
.pytest_cache/
.coverage
htmlcov/
.tox/
.mypy_cache/
.ruff_cache/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/

# ==============================================================================
# Ruby / Rails 开发环境
# ==============================================================================
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/spec/examples.txt
/test/tmp/
/test/version_tmp/
/tmp/

# Bundler 本地覆盖与部署缓存
/.bundle/
/vendor/bundle/
/vendor/gems/

# ==============================================================================
# Go (Golang) 开发环境
# ==============================================================================
# 编译二进制产物
*.exe
*.exe-e
*.bat
*.dll
*.so
*.dylib

# 测试与覆盖率输出
*.test
*.out
*.prof

# Go 依赖工具生成的文件
vendor/

# ==============================================================================
# Node.js / 前端开发环境
# ==============================================================================
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# ==============================================================================
# 环境与密钥文件(安全防泄漏)
# ==============================================================================
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
*.pem
*.key
EOF

# 确认 Git 使用全局过滤文件
git config --global core.excludesfile ~/.gitignore_global

说明

  • 精确过滤 macOS 隐藏垃圾:不仅包含了 .DS_Store ,还涵盖了 Apple 系统在卷(Volume)或移动硬盘上生成的 .Trashes (回收站)、 .Spotlight-V100 (索引)以及 ._* (资源分叉文件)。

  • 工具链与缓存隔离:自动屏蔽 Python 的 __pycache__ / .ruff_cache ,Go 编译的二进制文件及 .out ,Ruby 的 .bundle / vendor ,以及 Neovim 的临时 .swp / .un~ 撤销文件。

  • 安全防泄漏:全局拦截 .env 、 *.key 和 *.pem 等敏感密钥文件,防止因一时疏忽将机密信息提交到 GitHub / GitLab 公开仓库。

  • Rust 安全隔离

    • 自动屏蔽 Rust 的构建产物目录 target/ 。Rust 在频繁编译时 target/ 目录动辄占用数 GB 空间,全局屏蔽可以彻底规避误将编译缓存推送到 GitHub 的尴尬。

    • 屏蔽 *.rlib 和 *.rmeta 等二进制中间库文件以及某些编辑器插件生成的备份文件( *.rs.bk )。

  • Swift & Xcode 专业规则

    • 屏蔽 Xcode 专有的用户个人状态( xcuserdata/ ,包含了你个人在 Xcode 里打的断点、展开的目录状态等,绝对不应该提交)。

    • 过滤 Swift Package Manager (SPM) 编译产生的 .build/ 和 .swiftpm/ 缓存文件夹。

    • 精确保留了 Xcode 共享项目结构定义( project.pbxproj 和 xcshareddata ),保证如果以后创建了 Swift/macOS App 团队协作项目,共享的核心结构依然能正常被 Git 追踪。

参考

  • gemini