开源必备:Git 仓库敏感日志文件清理与脱敏教程

2 阅读1分钟

在做个人项目的时候,有时为了开源需要对数据进行脱敏,尤其是一些log文件。

先确认代码里还有没有其他“XXX”?

执行这条精准排除命令:

git grep -w "XXX" $(git rev-list --all) -- ":!*.log"

如果没有输出,证明没有包含相关字符串的文件,如果有输出则需要进行如下操作,彻底删除文件的历史。

⚠️ 警告,以下操作会改写所有 Commit 的 Hash 值,必须强制推送!

1.在项目根目录执行清洗命令

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch "*/hs_err_pid*.log"' \
--prune-empty --tag-name-filter cat -- --all

执行过程中终端会疯狂滚动 “Rewriting ...”,耐心等待即可。

2. 清理 Git 内部备份

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now

3. 防止再次犯错,**在 **.gitignore 中永久屏蔽

# JVM 崩溃日志
hs_err_pid*.log
*.log

4.删除本地log文件,强制推送覆盖远程仓库

# 删除当前文件
git rm --force hs_err_pid*.log
git add .gitignore
git commit -m "chore: 删除误上传的JVM崩溃日志 + 屏蔽所有.log文件提交"
git push origin --force --all

5.验证是否彻底干净

git grep -w "XXX" $(git rev-list --all)

如果没有任何输出,则大功告成。