2015-03-30 419 views
0

我們在工作中有一個GitLab託管的回購站,其中包含一些我們想要移除的大型二進制文件。我知道諸如BFG Repo-Cleaner這樣的工具,它將從Git存儲庫中刪除文件。永久刪除GitLab回收站中的二進制文件

我們經常在GitLab中引用特定的提交ID。運行BFG Repo-Cleaner會搞砸嗎?

如果是這樣,是否有更好的方法來清理回購,不會搞砸這些?

回答

1

我們經常在GitLab中引用特定的提交ID。

雖然git的歷史不能在不改變所有後續提交ID來修改,BFG做了幾件事情,將與變化幫助:

  1. ,因爲它是清潔您的回購,BFG的updates any object ids it finds in commit messages與他們的新ID。如果您要刪除private data,那麼這是一個straight substitution,如果您剛刪除大文件(即提交ID本身不包含意味着敏感信息),則提交消息中的文本將變爲"$newId [formerly $oldId]",此外,Former-commit-id:頁腳將會被添加到all modified commit messages的底部。
  2. BFG還會在每次運行時在repo-name.bfg-report目錄下創建一個object-id-map.old-new.txt文件。原則上,我相信這個文件可以在GitLab倉庫中使用,以便其他對commit id的引用也可以修復。

完全披露:我是BFG Repo-Cleaner的作者。

1

我們經常在GitLab中引用特定的提交ID。運行BFG Repo-Cleaner會搞砸嗎?

git commit id是從提交內容的哈希值和前一次提交的id構建而成的。這意味着修改歷史的任何操作都會導致(a)您修改的任何提交的新提交標識和(b)每個後代提交的新提交標識

如果不生成新的提交ID序列,則無法修改存儲庫的歷史記錄。