2017-02-28 37 views
1

我意外地将敏感信息提交到存储库,然后执行强制推送以从公共存储库中删除该提交。如果您重写历史记录,git是否会保留旧文件一段时间?

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

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

+1

是的。它仍然在本地回购和远程回购一段时间(实际上相当长)。检查'git gc'。更好地更改所有暴露的密码。 – ElpieKay

回答

1

push --force之后,旧的历史提交仍然是存储库的一部分。他们只是无法通过任何分支到达。 (有关于由push --forcehere产生的悬挂提交的讨论)。当没有提交任何提交时,提交变成悬挂,并将由垃圾收集git gc(有关git gc文档,请参阅here)。

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

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

为了深入了解最新的内容,我可以推荐this文章。