私たちの現在のレポには数万のコミットがあり、新しいクローンはほぼギガのデータを転送します (履歴から削除された多数の jar ファイルがあります)。リポジトリで現在アクティブなファイルのみの完全な履歴を保持する新しいリポジトリを作成するか、現在のリポジトリを変更して削除されたファイルの履歴をクリアすることで、このサイズを削減したいと考えています。しかし、実際の邸宅でこれを行う方法がわかりません。
Remove deleted files from git historyのスクリプトを試しました:
for del in `cat deleted.txt`
do
git filter-branch --index-filter "git rm --cached --ignore-unmatch $del" --prune-empty -- --all
# The following seems to be necessary every time
# because otherwise git won't overwrite refs/original
git reset --hard
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now
done;
しかし、履歴に何万もの削除されたファイルがあり、何万ものコミットがあることを考えると、スクリプトの実行には永遠の時間がかかります。2時間前に削除されたファイル1つだけに対してこれを実行し始めましたが、filter-branchコマンドはまだ実行されています.40,000以上のコミットを一度に1つずつ処理しています.これはSSDドライブを搭載した新しいMacbook pro上にあります.
ページhttps://help.github.com/articles/remove-sensitive-dataも読みましたが、これは単一のファイルを削除する場合にのみ機能します。
誰もこれを行うことができましたか?現在追跡されているファイルの履歴を保存したいのですが、履歴を保存できない場合、スペース節約のメリットが新しいリポジトリを作成する価値があるかどうかはわかりません。