彻底清除Github上某个文件的历史操作记录(亲测有效)

今天又被GitHub制裁了半天,不过好在最后问题解决了,防止下次出错赶紧记下来!

问题描述:
我在GitHub有一个库hum,在路径hum/kkk/下存在一个test.c文件,我在本地修改了test.c文件,修改过程中不小心在test.c代码段添加了一些私密信息(如密码之类的),然而机智的我并没有发现就直接git push 提交到了github,/泪奔/泪奔,冲动之下我再次更改本地的test.c文件(把那段私密信息删掉删掉),从新提交到GitHub,正当我以为只是小问题时,我去GitHub上查看test.c的历史记录。。。。记录里显示最新的一次更改是:您删除了test.c中的某某信息,这些信息是什么什么。。。哇,心中千万只草泥马而过啊啊!那相当于历史记录里还是存在我的私密信息啊,好吧,最后在我不懈的努力之下还是完美删除了这些历史信息。

解决方法:
本地Linux命令行下分六步
首先cd 进入项目文件夹下,然后执行以下代码

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件名' --prune-empty --tag-name-filter cat -- --all

git push origin master --force

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

注意几点说明:
①:执行这些命令要在项目的顶层路径下,如我当前工作路径在hum/下,不能是在hum/kkk/下,第一条命令中,文件名写相对路径,如我此处为kkk/test.c

②:这些命令是把test.c的所有历史记录删除,我操作之后的结果是也删除了本地test.c文件,所以为了安全起见应该先在本地把改好的test.c文件备份,等这六步操作完成之后再git push提交一次test.c就可以了

待解决:
如何删除某文件特定的一条历史记录?

你可能感兴趣的:(GitHub)