【问题标题】:Does git keep old files for a while if you rewrite history?如果您重写历史记录,git 会保留旧文件一段时间吗?
【发布时间】:2017-02-28 00:10:37
【问题描述】:

我不小心将敏感信息提交到存储库,然后强制推送以从公共存储库中删除该提交。

之后我更改了所有公开的密码。

这是一个关于 git 的技术问题。已删除提交的记录是否会保留在我的本地 git 存储库中?并且会在一段时间后消失吗?这是在哪里记录的?

【问题讨论】:

  • 是的。它仍然在本地 repo 和远程 repo 中一段时间​​(实际上相当长)。检查git gc。最好更改所有暴露的密码。

标签: git


【解决方案1】:

push --force 之后,旧历史的提交仍然是存储库的一部分。它们只是无法通过任何分支访问。 (有一个关于由push --forcehere 产生的悬空提交的讨论)。当不再引用提交时,提交将变得悬空,并将被git gc 垃圾收集(请参阅here 获取 git gc 文档)。

但是,只要有任何对提交的引用,它就不会被垃圾收集。如果没有分支和标记指向提交并且它不再从reflog 中引用,就会出现这种情况。 reflog 部分在this discussion 中进行了解释。

所以,答案是肯定的,你的旧提交将继续存在,是的,它们会在一段时间后消失,但很难说什么时候。您可以尝试手动删除所有引用(通过删除分支/标签,如果相关,git reflog --expire=<time> 的 reflog 引用,请参阅 here)。

为了更深入地了解内心深处发生的事情,我可以推荐this 文章。

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2012-12-21
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多