Git
git 從 repo 歷史記錄中刪除一個大型子目錄,該子目錄在幾次送出前被刪除
這個儲存庫有一個大文件的大型子目錄,幾個月前我從送出中刪除了這些文件,現在我想永遠從儲存庫中刪除。巨大的子目錄不再在下載中,但對象目錄是巨大的。
簽出/複製需要很長時間,我相信這是因為 .git/objects 目錄很大。
repo <files to keep> <massive subdirectory>
我想刪除大量的子目錄。
https://stackoverflow.com/questions/10067848/remove-folder-and-its-contents-from-git-githubs-history
上面的連結對我放入此腳本的過程進行了長時間的討論:
#!/bin/bash if [ -z "$1" ]; then echo "missing argument: subdirectory to remove" exit fi git filter-branch --tree-filter 'rm -rf $1' --prune-empty HEAD git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d echo $1/ >> .gitignore git add .gitignore git commit -m 'Removing $1 from git history' git gc git push origin master --force
我已經執行它而沒有明顯錯誤,然後複製了 repo 以發現 .git/objects 目錄的大小沒有減小。
腳本是否缺少某些內容?我錯過了什麼嗎*?*最新版本的 git 是否針對此要求引入了更直接的功能?
還有另一種方法嗎?
這個答案
index-filter
在其他人沒有的地方對我有用: