以下敏感文件和目录已被正确忽略,不会被提交到GitHub:
✓ .env # API密钥配置文件
✓ venv/ # Python虚拟环境
✓ outputs/ # 生成的PPT图片
✓ *.key, *.pem # 其他密钥文件
✓ .DS_Store # macOS系统文件
✓ __pycache__/ # Python缓存
✓ test_*.json # 测试文件
之前的问题(已修复):
- ❌
run.sh中硬编码了API密钥
当前方案:
- ✅ API密钥存储在
.env文件中 - ✅
.env已添加到.gitignore - ✅
run.sh从.env文件读取密钥 - ✅ 提供
.env.example作为配置模板
以下文件是安全的,可以提交到GitHub:
✓ .env.example # 环境变量模板(不含真实密钥)
✓ .gitignore # Git忽略规则
✓ README.md # 项目说明
✓ QUICKSTART.md # 快速开始指南
✓ SETUP_COMPLETE.md # 配置完成说明
✓ generate_ppt.py # Python生成脚本
✓ ppt-generator.md # Skill定义
✓ run.sh # 启动脚本(已修复,不含密钥)
✓ styles/*.md # 风格定义文件
✓ templates/*.html # HTML模板
# 检查 .env 是否被忽略
git check-ignore -v .env
# 应输出: .gitignore:15:.env .env
# 检查哪些文件会被提交(模拟)
git add -n .
# 确认列表中没有 .env 文件# 搜索可能的API密钥
grep -r "AIzaSy" --exclude-dir=.git --exclude-dir=venv --exclude-dir=outputs .
# 如果只在 .env 中找到,说明安全 ✓
# 如果在其他文件中找到,需要删除 ✗# 如果您之前有提交,检查历史中是否包含密钥
git log --all --full-history --source -- .env
# 如果有输出,说明 .env 曾被提交,需要清理历史# 1. 初始化Git仓库(如果还没有)
git init
# 2. 验证 .gitignore 正常工作
git status
# 确认 .env、venv/、outputs/ 不在列表中
# 3. 添加所有安全文件
git add .
# 4. 再次检查暂存区
git status
# 确认没有敏感文件
# 5. 提交
git commit -m "Initial commit: PPT Generator"
# 6. 关联远程仓库
git remote add origin https://github.com/你的用户名/ppt-generator.git
# 7. 推送
git push -u origin main# 1. 查看改动
git status
# 2. 添加文件
git add .
# 3. 提交
git commit -m "描述您的改动"
# 4. 推送
git push如果您不小心提交了包含密钥的文件,请立即:
1. 立即撤销密钥
# 访问 https://makersuite.google.com/app/apikey
# 删除或重新生成API密钥2. 从Git历史中删除敏感信息
# 使用 git filter-branch 或 BFG Repo-Cleaner
# 删除历史记录中的敏感文件
# 简单方法(会重写所有历史)
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch .env" \
--prune-empty --tag-name-filter cat -- --all
# 强制推送(慎用!)
git push origin --force --all3. 通知GitHub
# 如果仓库是公开的,考虑删除整个仓库重新创建
# 或者使用GitHub的密钥扫描功能检测提交到GitHub前,确认以下所有项目:
-
.env文件在.gitignore中 -
run.sh不包含硬编码的密钥 - 运行
git status确认没有敏感文件 - 运行
grep -r "AIzaSy" .确认密钥只在.env中 -
.env.example只包含模板,不包含真实密钥 -
outputs/目录被忽略(避免提交大量图片) -
venv/目录被忽略(避免提交依赖包)
给其他协作者的说明:
-
克隆仓库后,复制
.env.example为.env:cp .env.example .env
-
编辑
.env,填入自己的API密钥:GEMINI_API_KEY=你的实际密钥
-
.env文件会被Git忽略,不用担心提交
- ✓ 使用
.env文件存储密钥 - ✓ 将
.env添加到.gitignore - ✓ 提供
.env.example作为模板 - ✓ 定期轮换API密钥
- ✓ 使用环境变量而非硬编码
- ✓ 提交前运行
git status检查
- ✗ 在代码中硬编码密钥
- ✗ 将
.env提交到Git - ✗ 在公共仓库中存储密钥
- ✗ 在 README 中包含真实密钥
- ✗ 通过邮件或聊天发送密钥
- ✗ 使用同一密钥在多个项目
-
使用GitHub Secrets(如果使用GitHub Actions)
- 在仓库设置中添加密钥
- 在工作流中通过
${{ secrets.GEMINI_API_KEY }}使用
-
限制API密钥权限
- 只授予必要的API权限
- 设置API配额限制
-
监控API使用
- 定期检查API使用情况
- 发现异常立即撤销密钥
-
使用密钥管理服务(生产环境)
- AWS Secrets Manager
- HashiCorp Vault
- Azure Key Vault
当前状态: ✅ 您的项目已正确配置,可以安全提交到GitHub!