赞
踩
create-time:2018-11-28 22:15:36
本地git push 时不小心将写有敏感信息(包括但不限于密码、账号)推送到了GitHub上。
即使在本地使用git rm --cache file_name
清除了文件,但是在GitHub 的commit 历史记录上还是能够看到相关的文件及其信息。
我们希望能达到的目的是,清除有关敏感信息的一切信息(外界看不到敏感信息),而不影响其他信息。
使用git filter-branch
实现清除相关文件以及commit历史记录
注意:请先本地备份清除的文件,此命令同样会删除本地仓库文件,最好直接备份仓库
# 备份本地仓库
cp repo_directory_name new_directory_name
# 进入本地仓库目录
cd repo_directory_name
# 清除文件以及commit历史
# filename 使用相对路径。直接 仓库文件名称,绝对路径报错:文件在仓库之外
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch filename' --prune-empty --tag-name-filter cat -- --all
过滤本地敏感文件提交(可选)
将文件名加入到.gitignore
文件中,以后提交时,会被过滤掉,防止以后再次将敏感数据提交到代码仓库中
echo file_name >> .gitignore
删除GitHub上仓库(可选)
为了防止GitHub网站索引文件, 可以通过网页上删除该仓库,重新建立一个仓库。
提交
git push origin +master
# git push origin --force --all
BFG 安装
BFG 依赖于JAVA 开发环境,需要安装JAVA开发环境。
# 查看是否存在JAVA环境
java
# 查看JAVA环境文件
apt-cache search jdk
# 安装JAVA环境
sudo apt-get install default-jdk -y
# 查看JAVA 版本,验证JAVA环境
java --version
java
# 下载BFG, 网址在BFG网站上复制
# wget 下载的文件,就在 执行wget的当前目录
wget http://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar
# 压缩文件(Ubuntu 上红色字体文件),grep 无法直接 管道查看。
# 请直接使用 ls -a
ls -a
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。