文章目录
- 所有的步骤参考gpt
- 步骤一 使用环境变量
- 步骤二 撤销并移除历史中的API密钥
- (1) 安装: pip install git-filter-repo
- (2) 清除特定文件 git filter-repo --path PATH_TO_YOUR_FILE --invert-paths
- 出错
- 解决
- 步骤三 处理移除的 origin 远程
- 步骤四 强制推送到GitHub
- 步骤五 重新生成通义千问API密钥
前言:这两天有一个项目调用了通义千问API,但是api-key忘记存到环境变量里面了,后面使用环境变量时才想到有可能泄露了API。而且我推测下面这个邮件就是在提醒我。
所有的步骤参考gpt
步骤一 使用环境变量
将API密钥和baseURL存储在环境变量中,并且不要将这些信息上传到GitHub。
因为我的项目是vite+react,所以新建文件夹.env.local
VITE_API_KEY='xxxxxxxxxxxxx'
VITE_BASE_URL='xxxxxxxxxxxxxxxxxxxxxxxx'
如果项目要使用的话:
const apiKey = import.meta.env.VITE_API_KEY;
const baseURL = import.meta.env.VITE_BASE_URL;
然后在 .gitignore
文件中添加
.env.local
步骤二 撤销并移除历史中的API密钥
即使删除了提交,API密钥仍然存在于Git的历史记录中。因此,需要从历史中移除它
(1) 安装: pip install git-filter-repo
(2) 清除特定文件 git filter-repo --path PATH_TO_YOUR_FILE --invert-paths
因为我的密钥直接在App.jsx
中使用了,所以我要删除我这个文件App.jsx
的历史git filter-repo --path src/App.jsx --invert-paths
出错
$ git filter-repo --path src/App.jsx --invert-paths
Aborting: Refusing to destructively overwrite repo history since
this does not look like a fresh clone.
(expected freshly packed repo)
Please operate on a fresh clone instead. If you want to proceed
anyway, use --force.
这个错误信息是因为 git filter-repo 认为当前的仓库不是一个"干净的克隆"(例如,仓库中可能有未提交的更改、未提交的文件、或者其他复杂的Git历史记录)。为了安全和保证没有未预期的修改,它建议在一个新的、干净的克隆仓库中执行此操作。
解决
在一个新的、干净的克隆仓库中执行 git filter-repo,以确保安全地重写历史。以下是详细步骤:
1 克隆仓库到新的目录
git clone https://github.com/username/repository.git
cd repository
2 运行 git filter-repo
git filter-repo --path src/App.jsx --invert-paths
成功
具体来说,git filter-repo
重写了Git历史,并且删除了所有过去版本中包含 src/App.jsx
的提交。输出中提到的以下几点意味着成功:
Parsed 7 commits:表示重新处理了7个提交历史,表明git filter-repo已经重新写了提交历史。
New history written in 7.25 seconds:表示新的Git历史已经成功写入。
Repacking your repo and cleaning out old unneeded objects:表示Git库中的无用对象和历史被清理,确保删除的敏感信息不会再出现在历史中。
步骤三 处理移除的 origin 远程
上一步中,在git filter-repo --path src/App.jsx --invert-paths
成功后,控制台输出中提到:“Removing ‘origin’ remote”,这意味着需要重新添加远程仓库:
git remote add origin https://github.com/aPurpleBerry/DataVisualization.git
步骤四 强制推送到GitHub
git push origin --force --all