从GitHub历史记录中删除了敏感文件,但我仍然可以访问它

时间:2014-10-17 13:47:24

标签: git github

我已经意外地提交了敏感数据文件,并希望从当前的GitHub repo状态和整个历史记录中删除它。为了确保该过程完成,我在浏览器中打开了一个新选项卡,其中URL指向存储库历史记录中该文件的某个早期阶段。

我经历过" Remove sensitive data"在GitHub帮助中的文章,我通读了Darhuuk的答案,和其他许多人一样好,但仍然没有 - 文件清楚地从我的本地存储库及其GitHub远程对应文件中删除,但是当我刷新时其他标签,我可以清楚地看到该文件及其 sensitve 内容。

我错过了什么,或者我接下来应该做什么?

1 个答案:

答案 0 :(得分:4)

我不得不联系GitHub支持。他们一边跑git gc就完成了这个程序

由于我还没有任何合作者到我的存储库,因为我没有使用标签,所以我已经取消了步骤,我认为这些步骤无关紧要。除了他们我做了:

  1. 清空sensitive.file文件中的存储库:

    git filter-branch --force --index-filter \
    "git rm --cached --ignore-unmatch sensitive.file" \
    --prune-empty --tag-name-filter cat -- --all
    
  2. 强制更改GitHub:

    git push origin --force --all
    
  3. 清除本地缓存的更改:

    git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
    git reflog expire --expire=now --all
    git gc --prune=now
    
  4. 之后,git报告我,没有什么可以提交(git status),我的本地存储库是远程的(git pull + git push)最新的。但是,我仍然可以访问该文件,使用URL,我在其中一个标签中打开,这导致其在GitHub中的一个早期副本。

    刷新页面没有带来任何变化。档案显然在那里。

    我联系了GitHub支持,并在五分钟内得到答复(!)。他们不得不在他们身边运行git垃圾收集器(git gc)来完成这个过程。最后,在此之后,提到的链接开始显示404。