使用git-filter-repo删除AWS CodeCommit敏感文件遇历史残留问题求助
AWS CodeCommit敏感文件彻底擦除方案
现有步骤缺陷
- 仅执行
git push origin --force --all仅会更新本地已拉取的分支引用,未覆盖标签、远端拉取请求引用、以及本地未同步的其他分支的历史,这些引用如果关联了包含敏感文件的提交,会继续保留在CodeCommit远端 - 未处理AWS CodeCommit的平台侧逻辑:即使所有引用都不再指向包含敏感文件的提交,AWS默认会将悬空提交保留最长4周,且通过提交哈希的直链仍可访问,这部分操作权限不开放给用户
本地仓库彻底清理最优操作
执行以下步骤可以100%清除本地及远端可操作范围内的敏感文件痕迹:
- 以镜像模式克隆完整仓库,确保拉取所有分支、标签、引用:
git clone --mirror <你的CodeCommit仓库HTTPS/SSH地址> temp_clean_repo cd temp_clean_repo - 全量过滤删除目标文件的所有历史痕迹:
git filter-repo --invert-paths --path sub_folder/bad_script.java --force - 强制推送所有引用到远端,覆盖原有历史:
# 推送所有分支 git push origin --force --all # 推送所有标签 git push origin --force --tags # 清理所有远端拉取请求引用,避免PR关联的历史残留 git push origin --delete 'refs/pull/*' - 通知团队所有成员删除本地原有仓库,重新从CodeCommit克隆,禁止使用旧本地仓库推送内容,否则会将旧历史重新同步到远端
平台侧残留处理
你当前遇到的提交哈希直链仍可访问的问题,属于AWS平台侧的缓存和悬空提交保留策略,无法通过用户自行操作解决,需要:
- 提交AWS支持工单,选择CodeCommit服务类目,提供仓库ARN、需要删除的敏感提交哈希列表,要求后台彻底擦除对应提交的所有存储数据并清理控制台缓存
必要补充操作
无论文件擦除操作是否完成,第一时间轮换所有该脚本中涉及的密码、密钥、访问凭证,避免已泄露的凭证被滥用。
内容的提问来源于stack exchange,提问作者k..
相关产品推荐
相关产品推荐

