From 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 Mon Sep 17 00:00:00 2001 From: sillylaird Date: Thu, 3 Sep 2026 00:33:59 +0000 Subject: import live www.sillylaird.ca webroot --- .../git-workflow/references/gitignore-guide.md | 276 +++++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 .agents/skills/git-workflow/references/gitignore-guide.md (limited to '.agents/skills/git-workflow/references/gitignore-guide.md') diff --git a/.agents/skills/git-workflow/references/gitignore-guide.md b/.agents/skills/git-workflow/references/gitignore-guide.md new file mode 100644 index 0000000..9bc1a06 --- /dev/null +++ b/.agents/skills/git-workflow/references/gitignore-guide.md @@ -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 +``` -- cgit v1.2.3