首页/开发/Git 与协作速查/替换历史中的文本与凭证
进阶与大仓实践69 条

替换历史中的文本与凭证

用 --replace-text 按规则文件批量替换历史里的敏感串(如令牌、密钥、内部域名);替换规则支持字面量、正则与整行替换。

Git 与协作速查开发更新于 2026-10-12
用法git filter-repo --replace-text <规则文件>
规则每行:字面量=替换值;literal: 与 regex: 前缀明确模式;含 \n 可整行匹配
配套--path 可限定文件范围

操作示例

操作示例
cat > rules.txt <<'EOF'
SECRET_TOKEN==>***REMOVED***
regex:AKIA[0-9A-Z]{16}==>AKIA***
EOF
git filter-repo --replace-text rules.txt
历史里出现过的凭证必须视为已泄露:先轮换密钥,再清理历史;只清理不轮换等于没处理。

易错点

  • 把替换规则文件提交进仓库等于二次泄露,规则文件放在仓库目录之外
  • 二进制文件中的敏感串无法被文本规则匹配,需另行确认范围

数据来源与参考

  • git-filter-repo 官方文档(--replace-text 规则语法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌