2017-02-28 34 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文章。