如果你重写历史,git会保留旧文件一段时间吗?

如果你重写历史,git会保留旧文件一段时间吗?,git,Git,我意外地将敏感信息提交到存储库,然后强制从公共存储库中删除该提交 之后,我更改了所有暴露的密码 这是一个关于git的技术问题。删除的提交记录是否仍存在于本地git存储库中?一段时间后它会消失吗?这个文档记录在哪里?在一个push--force之后,旧历史记录的提交仍然是存储库的一部分。通过任何分支都无法访问它们。(有一个讨论是关于由推--force导致的悬空提交)。当不再有对提交的引用时,提交将变为悬空状态,并将由git-gc进行垃圾收集(有关git-gc文档,请参阅) 但是,只要存在对提交的任

我意外地将敏感信息提交到存储库,然后强制从公共存储库中删除该提交

之后,我更改了所有暴露的密码

这是一个关于git的技术问题。删除的提交记录是否仍存在于本地git存储库中?一段时间后它会消失吗?这个文档记录在哪里?

在一个
push--force
之后,旧历史记录的提交仍然是存储库的一部分。通过任何分支都无法访问它们。(有一个讨论是关于由
推--force
导致的悬空提交)。当不再有对提交的引用时,提交将变为悬空状态,并将由
git-gc
进行垃圾收集(有关git-gc文档,请参阅)

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

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


为了更深入地了解深层次的情况,我可以推荐这篇文章。

是的。它仍然在本地回购和远程回购中存在一段时间(事实上相当长)。选中git gc。最好更改所有公开的密码。