簡體   English   中英

如何從 Gitlab 中完全刪除舊提交?

[英]How to completely remove old commits from Gitlab?

我在 Gitlab 上有一個存儲庫,其中一個分支上有一些提交,如下所示

A - B - C - D - HEAD

我錯誤地在提交 B 上上傳了一些秘密令牌字符串,后來我注意到了,所以我從 A 創建了一個新分支,然后手動復制了提交 D 中的所有文件,所以歷史現在看起來像這樣

 /  - E - HEAD
A  - B  - C - D

現在我所做的是在 Gitlab 上刪除分支 BCD,這樣那些“令牌提交”就不再可以訪問了,歷史看起來像

A - E - HEAD

但是,我只是注意到我仍然可以通過 Project -> Activity 訪問麻煩的提交,並在那里看到我的舊推送仍然可以訪問舊提交。

我怎樣才能完全刪除那些?

正如您所注意到的,GitLab 在某些情況下會保留 git 引用,即使您刪除這些提交並強制推送所有分支也是如此。 除了您提到的活動頁面,這還將包括 MR 差異、管道參考等內容。

這在提交大文件時也很明顯——簡單地刪除提交並強制推送不會減少項目存儲大小!

要從 GitLab 項目中完全刪除內容,您需要按照本指南清除存儲庫歷史記錄。 通過上傳過濾器文件啟動項目清理后,所有各種提交引用都將被刪除,內容完全消失且無法訪問。

您可能仍會在活動頁面中看到提交哈希和消息,但鏈接不會顯示這些提交的任何內容,因為它們已被刪除。

如文檔中所述:

此過程不適合從存儲庫中刪除敏感數據,例如密碼或密鑰。 有關提交的信息(包括文件內容)緩存在數據庫中,即使從存儲庫中刪除后仍然可見。

因此,如本答案中所述,您應該采取的第一步是輪換被盜用的憑據。

如果完全刪除活動頁面和數據庫引用中的提交消息和哈希對您很重要,那么您唯一的選擇是遷移/刪除並重新創建項目(在清除 git 歷史記錄之后)。 但這也會刪除問題、合並請求等內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM