Appearance
附录 C:.gitignore 模板集合
.gitignore 文件告诉 Git 哪些文件不需要追踪。本附录收录了常见语言和框架的推荐配置。
提示:gitignore.io 可以根据语言/框架/IDE 自动生成
.gitignore文件。
.gitignore 语法速览
# 注释
*.log # 忽略所有 .log 文件
!important.log # 不忽略 important.log(取消忽略)
/debug.log # 只忽略根目录的 debug.log
build/ # 忽略 build 目录(及其所有内容)
doc/*.txt # 忽略 doc/ 目录下的 .txt 文件(不递归)
doc/**/*.pdf # 忽略 doc/ 目录下所有 .pdf 文件(递归)Node.js / JavaScript
# 依赖
node_modules/
.npm
.yarn-integrity
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# 构建输出
dist/
build/
out/
.next/
.nuxt/
.vitepress/dist/
# 环境变量
.env
.env.local
.env.*.local
# 日志
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
*.log
# 测试覆盖率
coverage/
.nyc_output/
# 缓存
.cache/
.parcel-cache/
.eslintcache
.stylelintcache
.sass-cache/
# 编辑器
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
.idea/
# macOS
.DS_StorePython
# 字节码
__pycache__/
*.py[cod]
*$py.class
# 虚拟环境
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# 发行包
*.egg
*.egg-info/
dist/
build/
eggs/
parts/
var/
sdist/
develop-eggs/
.installed.cfg
lib/
lib64/
# PyInstaller
*.spec
# 测试
.tox/
.nox/
.pytest_cache/
.coverage
.coverage.*
htmlcov/
nosetests.xml
coverage.xml
*.cover
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# pipenv
Pipfile.lock
# poetry
# poetry.lock # 通常应该提交,用于复现构建
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# 日志
*.logJava / Maven / Gradle
# 编译输出
*.class
*.jar
*.war
*.ear
*.nar
target/
build/
out/
# Maven
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
# Gradle
.gradle/
!gradle/wrapper/gradle-wrapper.jar
# IDE
.idea/
*.iml
*.ipr
*.iws
.classpath
.factorypath
.project
.settings/
.springBeans
.sts4-cache/
.eclipse/
# Spring Boot
HELP.md
# 日志
*.log
logs/
# macOS
.DS_Store
# Windows
Thumbs.dbGo
# 二进制文件
*.exe
*.exe~
*.dll
*.so
*.dylib
# 测试
*.test
*.out
coverage.out
# 依赖(通常提交 go.sum,不提交 vendor/ 除非必要)
vendor/
# 构建缓存
/dist/
# 环境变量
.env
# IDE
.idea/
.vscode/Rust
# Cargo 构建输出
/target/
# 编辑器
.idea/
.vscode/
# 环境变量
.envPHP / Laravel
# 依赖
/vendor/
/node_modules/
# Laravel 特定
.env
.env.backup
.phpunit.result.cache
storage/*.key
storage/app/public/
storage/framework/cache/
storage/framework/sessions/
storage/framework/testing/
storage/framework/views/
storage/logs/
bootstrap/cache/
# Composer
composer.pharRuby on Rails
# 依赖
/.bundle/
/vendor/bundle/
# 数据库
/db/*.sqlite3
/db/*.sqlite3-journal
# 日志和临时文件
/log/*
!/log/.keep
/tmp/*
!/tmp/.keep
# 环境
.env*
config/master.key
config/credentials/*.key
# 系统
*.DS_StoreDocker
# Docker Compose 覆盖文件(本地开发使用)
docker-compose.override.yml
# .env 文件
.env
.env.*
# 不忽略示例环境文件
!.env.exampleVue / React 前端项目
Vue(Vite):
node_modules/
dist/
.DS_Store
*.local
.vitepress/dist/
.vitepress/cache/
.env.local
.env.*.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*Create React App:
node_modules/
build/
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*Flutter / Dart
# Flutter/Dart 构建输出
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
build/
# Android
**/android/app/debug
**/android/app/profile
**/android/app/release
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
# iOS
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/UserInterfaceState.xcuserstate
**/ios/.generated/
**/ios/Flutter/.last_build_id
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
**/ios/Pods/macOS / Windows / Linux 通用
# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon?
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Windows
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
[Dd]esktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk
# Linux
*~
.fuse_hidden*
.directory
.Trash-*
.nfs*IDE 专用
# JetBrains(IntelliJ/WebStorm/PyCharm 等)
.idea/
*.iml
*.iws
*.ipr
out/
.idea_modules/
# VS Code
.vscode/
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
.history/
# Vim
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
Session.vim
Sessionx.vim
.netrwhist
*~
tags
# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
.org-id-locations
*_archive
*_flymake.*
/eshell/history
/eshell/lastdir
/elpa/
*.rel
/auto/
.cask/
dist/常见最佳实践
- 提交
.gitignore到仓库:让所有团队成员使用相同的规则。 - 不要提交
.env文件:使用.env.example作为模板。 - 使用全局
.gitignore:在~/.gitignore_global中放操作系统、编辑器生成的文件,项目.gitignore只放项目相关的内容。 - 已追踪文件需要额外处理:
bash
# 如果文件已经被追踪,需要先取消追踪
git rm --cached <file>
echo "<file>" >> .gitignore
git commit -m "chore: stop tracking <file>"