Skip to content

Latest commit

 

History

History
43 lines (36 loc) · 2.36 KB

File metadata and controls

43 lines (36 loc) · 2.36 KB

处理GitHub仓库中的敏感信息,主要有两种方法:使用git filter-branch命令和使用BFG Repo-Cleaner工具。以下是具体的步骤:

使用git filter-branch命令

  1. 备份仓库:在进行任何操作之前,建议先创建仓库的备份。
  2. 运行git filter-branch:使用该命令删除敏感文件及其历史记录。例如,如果要删除config/your-sensitive-file.json文件,可以使用以下命令:
    git filter-branch --force --index-filter "git rm --cached --ignore-unmatch config/your-sensitive-file.json" --prune-empty --tag-name-filter cat -- --all
    
    这个命令将从所有分支和标签中删除指定文件的历史记录。
  3. 垃圾回收:运行以下命令以删除未引用的数据并压缩仓库:
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
  4. 推送更改:将清理后的仓库推送回原始仓库,这将覆盖所有分支和标签:
    git push --force
    

使用BFG Repo-Cleaner工具

  1. 安装BFG Repo-Cleaner:确保你的系统中安装了Java,然后下载BFG Repo-Cleaner工具。
  2. 删除敏感文件:使用BFG命令删除敏感文件。例如,如果要删除包含敏感数据的文件,可以使用以下命令:
    bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
    
  3. 替换敏感文本:如果要替换敏感文本,可以使用以下命令:
    bfg --replace-text passwords.txt
    
    其中passwords.txt是一个包含所有需要被替换的敏感文本的文件。
  4. 强制推送更改:使用以下命令将更改推送到GitHub,这将重写仓库历史:
    git push --force
    

清理后的操作

  • 通知团队成员:清理敏感信息需要强制推送,这会覆盖远程仓库的历史记录。确保团队成员了解即将进行的操作,并在清理操作完成前避免提交新的代码。
  • 检查依赖和CI/CD:确认所有依赖项和CI/CD管道不会因历史记录更改而受到影响。
  • 联系GitHub支持:如果需要GitHub帮助移除敏感数据的缓存视图和引用,可以通过GitHub Support portal联系他们。

请确保在执行这些操作之前,你已经仔细阅读了所有相关的文档,并理解了这些操作的后果,特别是它们对现有仓库历史和团队协作的影响。