欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

2025/6/1 8:54:14 来源:https://blog.csdn.net/web2u/article/details/145340449  浏览:    关键词:Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

使用 BFG Repo-Cleaner 清除 Git 仓库中的敏感信息

1. 背景介绍

在使用 Git 进行版本控制时,有时会不小心将敏感信息(如 API 密钥、密码等)提交到仓库中。即使后续删除,这些信息仍然存在于 Git 的历史记录中。本文将介绍如何使用 BFG Repo-Cleaner 工具彻底清除这些敏感信息。

2. 准备工作

2.1 环境要求

  • Java 运行环境(JRE 8 或更高版本)
  • Git 客户端
  • 需要清理的 Git 仓库

2.2 下载 BFG

  1. 访问 BFG 官方下载页面:https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/
  2. 下载 bfg-1.13.0.jar 文件
  3. 将下载的 jar 文件放在你的项目父目录下

3. 使用步骤

  • 我的yml 文件
mybatis:mapper-locations: classpath:mappers/*xmltype-aliases-package: cn.yam.mcp.entity
server:port: 9091
spring:datasource:url: jdbc:mysql://localhost:3306/mcp-test-dbusername: rootpassword: 1234driver-class-name: com.mysql.cj.jdbc.Driverdeepseek:api-key: sk-1234logging:level:root: INFO                # 全局日志级别
#    org.springframework: DEBUG # Spring 框架的日志
#    org.springframework.web: DEBUG # Spring Web 的日志
#    org.springframework.jdbc: DEBUG # Spring JDBC 的日志

3.1 创建替换规则文件

  1. 在项目父目录下创建 secrets.txt 文件
  2. 添加替换规则,例如:
regex:sk-[a-zA-Z0-9]{32}==>***REMOVED***
regex:api-key:.*==>api-key: ***REMOVED***

这里的规则说明:

  • 第一行匹配形如 sk- 开头的 32 位字符的 API 密钥
  • 第二行匹配整个 api-key 配置行

3.2 目录结构示例

spring4test_proj/
├── bfg-1.13.0.jar
├── secrets.txt
└── Spring-MCP-starter/    # 你的 Git 仓库

3.3 执行清理命令

在项目父目录下执行:

java -jar bfg-1.13.0.jar --replace-text secrets.txt Spring-MCP-starter --no-blob-protection

参数说明:

  • --replace-text secrets.txt: 指定替换规则文件
  • Spring-MCP-starter: 指定要清理的仓库目录
  • --no-blob-protection: 允许修改最新的提交

3.4 清理和更新

进入仓库目录,执行:

cd Spring-MCP-starter
git reflog expire --expire=now --all && git gc --prune=now --aggressive

3.5 推送更改

git push origin --force --all

4. 注意事项

  1. 在执行清理前,确保已备份重要数据
  2. 使用 --force 推送会重写远程仓库的历史,团队其他成员需要重新克隆仓库
  3. 清理后要立即修改已泄露的密钥
  4. 建议在 .gitignore 中添加包含敏感信息的文件
  5. 考虑使用环境变量或配置管理工具来管理敏感信息

5. 最佳实践

  1. 使用配置模板文件

    # application.yml.template
    deepseek:api-key: ${DEEPSEEK_API_KEY}
    
  2. .gitignore 中添加

    application.yml
    
  3. 使用环境变量或专门的配置管理工具存储敏感信息

参考资料

  • BFG Repo-Cleaner 官方文档
  • Git 文档

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词