我意外地将敏感信息提交到存储库,然后强行推送以从公共存储库中删除该提交。
之后我更改了所有暴露的密码。
这是关于git的技术问题。删除提交的记录是否仍然存在于我的本地git存储库中?它会在一段时间后消失吗?这记录在哪里?
答案 0 :(得分:1)
在push --force
后,旧历史'提交仍然是存储库的一部分。它们无法通过任何分支访问。 (讨论了由push --force
here引起的悬空提交。如果没有对提交的引用,则提交将变为悬空并将由git gc
进行垃圾收集(有关git gc文档,请参阅here)。
但是,只要有任何对提交的引用,就不会对其进行垃圾回收。如果没有分支,并且没有指向提交的标记,并且不再从reflog
引用它,则会出现这种情况。 reflog部分在this discussion中进行了解释。
所以,答案是肯定的,你的旧提交将继续存在,是的,它们会在一段时间后消失,但很难分辨出来。您可以尝试手动删除所有引用(通过分支/标记删除,如果相关,并git reflog --expire=<time>
用于reflog引用,请参阅here)。
为了更深入地了解内心深处,我可以推荐this条。