Git 删除Github历史记录
Git 删除历史记录
create-time:2018-11-28 22:15:36
Content
-
1. 2. 3.
1.问题引入
本地git push 时不小心将写有敏感信息(包括但不限于密码、账号)推送到了GitHub上。
即使在本地使用git rm --cache file_name 清除了文件,但是在GitHub 的commit 历史记录上还是能够看到相关的文件及其信息。
我们希望能达到的目的是,清除有关敏感信息的一切信息(外界看不到敏感信息),而不影响其他信息。
2.解决方案
-
使用工具能够实现快速的清除。可惜,我还是没有看懂怎样使用,使用没有成功。BFG安装请参看 。 git filter-branch 命令。以下使用此命令解决。
3.方案实现
使用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
