由于部署問題,我們正試圖將我們的 git 存盤庫縮小到 500MB 以下。
為實作這一目標,我們創建了一個新分支,將所有舊影像、視頻和字體移至 AWS S3。
我可以輕松獲取檔案串列git diff --name-only --diff-filter=D master -- public/assets/。
現在,我嘗試在每個檔案上運行BFG-repo-cleaner 1.14.0。但是我有 400 個檔案,單獨洗掉每個檔案需要很長時間(在我寫這篇文章時仍在運行)。
git diff --name-only --diff-filter=D master -- public/assets/ | xargs -i basename '{}' | xargs -i bfg --delete-files '{}'
由于每個檔案都是不同的,因此我無法真正使用 glob 模式,如使用 bfg repo 清潔器從多個分支中洗掉多個檔案中所建議的那樣。
我試圖用逗號分隔每個檔案,但這導致BFG-repo-cleaner告訴我:
BFG 中止:沒有要更新的參考 - 沒有發現臟提交??
有沒有辦法在沒有 glob 模式的情況下向BFG-repo-cleaner提供多個檔案?
附注。我嘗試使用多個檔案的命令是:git diff --name-only --diff-filter=D master -- public/assets/ | xargs -i basename '{}' | sed -z 's/\n/,/g;s/,$/\n/' | xargs -i bfg --delete-files '{}' && git reflog expire --expire=now --all && git gc --prune=now --aggressive
聚苯乙烯。該bfg命令作為一個簡單的 bash 腳本位于我的 PATH 中java -jar /tools/BFG-repo-cleaner/bfg-1.14.0.jar "$@"
uj5u.com熱心網友回復:
但是我有 400 個檔案,單獨洗掉每個檔案需要很長時間
這就是為什么要使用的工具(基于python)是newren/git-filter-repo(參見安裝)
這樣,您可以為該工具提供一個檔案,其中包含檔案串列:
git filter-repo --paths-from-file <filename> --invert-paths
從檔案:
同樣,您可以使用
--paths-from-file洗掉許多檔案。例如,您可以運行
git filter-repo --analyze以獲取報告,查看諸如.git/filter-repo/analysis/path-deleted-sizes.txt并將所有檔案名復制到諸如 之類的檔案中/tmp/files-i-dont-want-anymore.txt,然后運行:git filter-repo --invert-paths \ --paths-from-file /tmp/files-i-dont-want-anymore.txt將它們全部洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387337.html
標籤:混帐 git-rewrite-history bfg-repo-cleaner
上一篇:列出git中提交涉及的所有檔案
下一篇:當前分支處于分離狀態
