【问题标题】:Removed sensitive file from GitHub history, but I can still access it [duplicate]从 GitHub 历史记录中删除了敏感文件,但我仍然可以访问它[重复]
【发布时间】:2014-12-13 02:57:51
【问题描述】:

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

我阅读了 GitHub 帮助中的“Remove sensitive data”文章,阅读了 Darhuuk 的答案,和这里的许多其他人一样好,但仍然一无所获——文件显然已从我的本地存储库及其 GitHub 远程中删除对应,但是当我刷新其他选项卡时,我可以清楚地看到该文件及其 sensitve 内容。

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

【问题讨论】:

  • 向没有足够勇气写评论的贪婪的投票者问好,这个问题有什么问题! :>

标签: git github


【解决方案1】:

我不得不联系 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
    

在那之后,git 向我报告,没有什么可以提交 (git status) 并且我的本地存储库与远程存储库是最新的 (git pull + git push)。但是,我仍然可以使用我在其中一个选项卡中打开的 URL 访问该文件,这导致了它在 GitHub 中的早期副本之一。

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

我联系了 GitHub 支持并在五分钟内得到回复 (!)。他们必须运行 git 垃圾收集器 (git gc) 才能完成此过程。最后,在那之后,提到的链接开始显示404。

【讨论】:

  • 从 Git/GitHub 中删除敏感数据时要知道的最重要的事情是:如果您的公共存储库中有敏感信息,请认为它已受到损害。 “如果您提交了密码,请更改它!如果您提交了密钥,请生成一个新密钥。” help.github.com/articles/remove-sensitive-data
猜你喜欢
  • 2013-03-10
  • 2020-05-08
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多