git使用时经常会不慎提交一下不该提交的东西,比如把build文件夹整个提交了,或者把密码提交了。此时可以使用工具批量修改历史,再git push -f更改历史记录。

根据GitHub文档的建议,我们可以使用BFG来清理,如

cp repo-to-clean repo-to-clean2
cd repo-to-clean2
bfg --strip-blobs-bigger-than 100M --replace-text patterns.txt --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
git push -f

中文

BFG并不默认使用utf,而是支持根据文件的头几个字母判断编码,对于代码容易出现误判,需要设置变量file.encoding=UTF8提示编码。方法包括

  • 设置环境变量JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
  • 运行时使用java -D"file.encoding=UTF8" -jar bfg ...参数...直接定义变量