簡體   English   中英

git從所有分支刪除文件和歷史記錄

[英]git remove file and history from all branches

一年多以前,我已經在gitlab上創建了一個私有存儲庫,並且隨着時間的推移,該回購協議已經有了一定的增長。 事后看來,我的一個錯誤是在存儲庫中放入了一些大的二進制文件。 我不了解git-lfs ,現在回購已大大增加。

所以我認為可能的方法是:

  • 從整個存儲庫(以及所有分支)中刪除文件及其歷史記錄。
  • 啟用git-lfs (同樣在所有分支上都啟用)。
  • 添加這些文件(同樣在所有分支上)。

情況是,我在存儲庫中有很多活動分支。 有沒有辦法用最少的命令在所有分支上做到這一點?

當然,另一種方式是存檔此倉庫,然后從頭開始在一個全新的存儲庫中啟用git-lfs並手動添加所有內容。 但是,鑒於分支機構的數量,這似乎又是乏味的。

git lfs import命令將自動執行此操作。 它將重寫每個分支以刪除大文件:

git lfs migrate import --everything

將在歷史記錄中定位所有大文件,並重寫每個分支以將hem設置為LFS對象,而不是將大文件直接保留在Git中。

如果要標識要導入的大文件:

git lfs migrate import --everything --include='*.dat'

無論大小如何,都將遷移所有以.dat結尾的文件。

如果您的存儲庫中有幾個人在工作,我建議您仔細計划遷移 ,因為最終您將需要強制推送您重寫的分支。

暫無
暫無

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

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