You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git操作:如何移除318个含敏感密码的历史提交

Git批量移除敏感提交的解决方案

方案一:仅保留最新25个提交(操作最简单)

如果可以接受只保留最新的25个提交,直接基于目标起始提交重建分支即可:

  1. 先确定要保留的最早提交哈希(比如示例中的780435e,即删除密码目录的那次提交)
  2. 在本地仓库执行以下命令:
    # 创建临时分支,指向要保留的最早提交
    git checkout -b new-master 780435e
    # 将原master分支上该提交之后的所有提交合并到临时分支
    git cherry-pick 780435e..master
    # 切换回原master分支
    git checkout master
    # 强制重置master分支到临时分支的状态
    git reset --hard new-master
    # 强制推送至远程仓库(会覆盖远程历史,操作前确认)
    git push origin master --force
    # 删除临时分支
    git branch -d new-master
    

方案二:彻底清除敏感目录并移除指定提交

如果需要保留更多历史但彻底清除passwords目录的所有痕迹,同时移除不需要的提交,推荐用git filter-repo(比旧的git filter-branch更高效,适合大量提交场景):

  1. 确保已安装git filter-repo(新版本Git默认包含,若未安装可通过系统包管理器安装)
  2. 执行命令彻底移除passwords目录及其所有历史记录:
    git filter-repo --path passwords --invert-paths
    
  3. 移除不需要的提交:找到需要保留的最早提交哈希,执行重置命令丢弃之前的所有提交:
    git reset --hard <需要保留的最早提交哈希>
    # 强制推送至远程仓库
    git push origin master --force
    

注意事项

  • 操作前必须备份本地仓库,防止数据丢失
  • 强制推送会覆盖远程仓库的历史,需确保所有协作成员知晓并同步更新本地仓库
  • 若远程仓库开启了分支保护,需先关闭保护才能执行强制推送

内容的提问来源于stack exchange,提问作者Sabrina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:42:08