first commit
This commit is contained in:
@@ -0,0 +1,276 @@
|
||||
# .gitignore 规范
|
||||
|
||||
## 基本规则
|
||||
|
||||
```
|
||||
# 空行:不匹配任何文件
|
||||
# 注释:以 # 开头
|
||||
# 目录:以 / 结尾
|
||||
# 取反:以 ! 开头表示不忽略
|
||||
# 根目录:以 / 开头表示项目根目录
|
||||
|
||||
*.log # 忽略所有 .log 文件
|
||||
node_modules/ # 忽略 node_modules 目录
|
||||
/temp/ # 忽略根目录下的 temp 目录
|
||||
**/.env # 忽略所有目录下的 .env 文件
|
||||
!.gitkeep # 不忽略 .gitkeep 文件
|
||||
```
|
||||
|
||||
## 通用 .gitignore
|
||||
|
||||
```
|
||||
# ============================================
|
||||
# 依赖目录
|
||||
# ============================================
|
||||
node_modules/
|
||||
vendor/
|
||||
|
||||
# ============================================
|
||||
# 构建产物
|
||||
# ============================================
|
||||
dist/
|
||||
build/
|
||||
target/
|
||||
|
||||
# ============================================
|
||||
# 编辑器和 IDE
|
||||
# ============================================
|
||||
.idea/
|
||||
.vscode/
|
||||
*.sw?
|
||||
|
||||
# ============================================
|
||||
# 环境配置
|
||||
# ============================================
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# ============================================
|
||||
# 日志文件
|
||||
# ============================================
|
||||
logs/
|
||||
*.log
|
||||
npm-debug.log*
|
||||
|
||||
# ============================================
|
||||
# 系统文件
|
||||
# ============================================
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# ============================================
|
||||
# 缓存文件
|
||||
# ============================================
|
||||
.cache/
|
||||
.eslintcache
|
||||
.stylelintcache
|
||||
```
|
||||
|
||||
## 项目特定配置
|
||||
|
||||
### 前端/文档项目补充
|
||||
|
||||
```
|
||||
# VitePress
|
||||
docs/.vitepress/dist
|
||||
docs/.vitepress/cache
|
||||
|
||||
# Node.js
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
```
|
||||
|
||||
### 后端项目补充
|
||||
|
||||
```
|
||||
# Maven
|
||||
target/
|
||||
pom.xml.tag
|
||||
*.jar
|
||||
!**/src/main/**/target/
|
||||
|
||||
# 敏感配置
|
||||
application-local.yml
|
||||
application-dev.yml
|
||||
```
|
||||
|
||||
### Python 项目补充
|
||||
|
||||
```
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
venv/
|
||||
env/
|
||||
ENV/
|
||||
.pytest_cache/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype
|
||||
.pytype/
|
||||
```
|
||||
|
||||
### Go 项目补充
|
||||
|
||||
```
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool
|
||||
*.out
|
||||
|
||||
# Dependency directories
|
||||
vendor/
|
||||
|
||||
# Go workspace file
|
||||
go.work
|
||||
```
|
||||
|
||||
### Rust 项目补充
|
||||
|
||||
```
|
||||
# Rust
|
||||
/target/
|
||||
**/*.rs.bk
|
||||
*.pdb
|
||||
Cargo.lock
|
||||
```
|
||||
|
||||
## .gitignore 技巧
|
||||
|
||||
### 忽略文件但保留目录
|
||||
|
||||
```
|
||||
logs/*
|
||||
!logs/.gitkeep
|
||||
```
|
||||
|
||||
### 检查忽略规则
|
||||
|
||||
```bash
|
||||
git check-ignore -v filename
|
||||
```
|
||||
|
||||
### 清理已提交的忽略文件
|
||||
|
||||
```bash
|
||||
git rm --cached filename
|
||||
git commit -m "chore: 移除不应提交的文件"
|
||||
```
|
||||
|
||||
### 调试 .gitignore
|
||||
|
||||
```bash
|
||||
# 查看文件是否被忽略以及被哪条规则匹配
|
||||
git check-ignore -v path/to/file
|
||||
|
||||
# 查看所有被忽略的文件
|
||||
git ls-files --others --ignored --exclude-standard
|
||||
```
|
||||
|
||||
## 常见模式
|
||||
|
||||
### 忽略特定文件
|
||||
|
||||
```
|
||||
# 忽略特定文件
|
||||
config/local.json
|
||||
secrets.yaml
|
||||
```
|
||||
|
||||
### 忽略特定类型
|
||||
|
||||
```
|
||||
# 忽略所有 .log 文件
|
||||
*.log
|
||||
|
||||
# 忽略所有临时文件
|
||||
*.tmp
|
||||
*.temp
|
||||
```
|
||||
|
||||
### 忽略目录
|
||||
|
||||
```
|
||||
# 忽略所有 node_modules 目录
|
||||
node_modules/
|
||||
|
||||
# 忽略根目录下的 build 目录
|
||||
/build/
|
||||
|
||||
# 忽略任何位置的 build 目录
|
||||
**/build/
|
||||
```
|
||||
|
||||
### 取反规则
|
||||
|
||||
```
|
||||
# 忽略所有 .a 文件
|
||||
*.a
|
||||
|
||||
# 但不忽略 lib.a
|
||||
!lib.a
|
||||
|
||||
# 忽略所有 TODO 文件
|
||||
TODO*
|
||||
|
||||
# 但不忽略 TODO.md
|
||||
!TODO.md
|
||||
```
|
||||
|
||||
### 通配符
|
||||
|
||||
```
|
||||
# * 匹配任意字符
|
||||
*.log
|
||||
|
||||
# ** 匹配任意目录
|
||||
**/temp/
|
||||
|
||||
# ? 匹配单个字符
|
||||
file?.txt
|
||||
|
||||
# [] 匹配括号内任意字符
|
||||
file[0-9].txt
|
||||
```
|
||||
|
||||
## .gitignore 优先级
|
||||
|
||||
1. 命令行指定的文件(如 `git add -f`)
|
||||
2. `.git/info/exclude`(本地排除规则)
|
||||
3. `.gitignore`(项目级别,提交到仓库)
|
||||
4. `~/.gitignore_global`(全局级别)
|
||||
|
||||
### 本地排除规则
|
||||
|
||||
对于不想提交到仓库的本地忽略规则:
|
||||
|
||||
```bash
|
||||
# 编辑本地排除文件
|
||||
git config --global core.excludesfile ~/.gitignore_global
|
||||
|
||||
# 或者使用 .git/info/exclude(仅当前仓库)
|
||||
echo "secrets.yaml" >> .git/info/exclude
|
||||
```
|
||||
Reference in New Issue
Block a user