## [ERR-20260427-005] 多分支并行时 .gitignore 不同步，生产分支可能漏关键 ignore 规则

**日期**: 2026-04-27
**类别**: Git 工作流 / 安全防护
**严重度**: 中（不会立即出事，但是定时炸弹）

### 问题描述
给 UAT 和 PROD 部署目录加了同一个敏感目录 `certs/adp/`。检查发现：
- UAT (staging 分支)：`.gitignore` 有 `certs/` ✅
- PROD (production 分支)：`.gitignore` **没有** `certs/` ❌

原因是 `certs/` 这条规则在 develop 后期才加，已合到 staging，还没流到 production。期间 PROD 上 `git status` 会把证书显示为 untracked，存在被误 `git add` 提交进生产分支的风险。

### 不直观的解
**不能直接编辑 PROD 上的 `.gitignore`** —— 那是 tracked 文件，改了会污染 production 分支。

正确解：用 `.git/info/exclude`，git 提供的「本地仓库级 ignore」：
```bash
ssh prod 'cd /srv/apps/.../ && echo "certs/" >> .git/info/exclude'
```
- 不属于版本控制内容（在 `.git/` 元数据下）
- 不进 commit、不影响分支内容
- 与 `.gitignore` 行为等价
- 当 production 分支后续合入 `.gitignore` 的更新后，这行可以保留或删除（无害）

### 启示
- 多分支项目中（develop / staging / production 长期分叉），任何"防护型"配置（.gitignore、.editorconfig、.eslintrc 等）都可能有版本漂移
- 给敏感目录加 ignore 不要只看一个分支
- `.git/info/exclude` 是临时打补丁的安全工具：写入快、撤销快、不污染版本历史
- 类似的"本地 git 配置不进仓库"还有：`.git/config`（user.email、push 默认行为）、`.git/hooks/`（本地 hook）

---
