🍁简介
🔗 相关资料 :
一文玩转Git
有时候我们提交代码到GitHub/Giglab平台, 发现一不小心把带有账号密码以及服务器地址的代码等敏感信息提交到公共平台,对于这种情况我们应该使用一些方案进行规避。下面就讨论下这些方案!
- 方法一: 配置文件通过.gitignore排除配置文件
- 方法二: 把每次的提交的敏感内容删除,然后再提交
- 方法三: 把每次提交的敏感内容修改掉
🍁 方法 / 步骤
🌿 方法一 : .gitignore排除配置文件
# 在.gitignore文件中添加忽略的文件名
application-prod.yml
# 刷新.gitignore 缓存
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
🌿 方法二 : 提交的敏感内容删除,再提交
🌿 方法三 : 把每次提交的敏感内容修改掉
该方法就是重置git所有记录, 只保留当前最后一次的最新记录,慎重操作
可以手动操作:备份当前main分支代码 --> 创建一个空分支temp–> 把备份的代码添加到空分支 --> 提交空分支代码 --> 删除其他分支 --> 更改temp分支名称为main --> 完成
3.1 备份本地代码(重要)
最好物理备份一下当前代码
3.2 本地操作
# 新建分支
git checkout -b temp
git push origin temp:temp
# 重建主分支
# 下面我们可以删除并重建主分支, 如果是github的话需要将Default Branch切换到别的分支(项目主页->Settings即可看到)
git push origin --delete main
git branch -d main
git checkout -b main
git push origin main
git branch -d temp
git push origin --delete temp
♻ 对已经提交的敏感内容进行修复
克隆目标仓库
# 建立临时目录 git-sensfixed
cd git-sensfixed
# 克隆并且生成xx.git目录
git clone --mirror https://github.com/xxx/xx.git
建立替换策略脚本
- 建立一个文本文件,如replace-wods.txt,根据替换策略,内容如下:
myPwd123 是你要替换的字符
# Replace with ‘***REMOVED***’ (default)
myPwd123
也可以是:
# replace with 'examplePass' instead
#myPwd123==>examplePass
执行脚本
BFG工具官网地址
java -jar bfg-1.14.0.jar --replace-text replace-wods.txt xx.git
cd xx.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push
然后查看含有敏感信息的文件的提交历史,就会发现每个历史提交中的敏感信息都被替换成:
***REMOVED***
🍁 参考资料 & 致谢
[1] 利用BFG删除git提交历史中的敏感内容、或者文件
[2] idea中git版本的回退