私のリポジトリはオープン ソース プロジェクトからフォークされているため、ForkPoint タグの前のコミットを変更したくありません。BFG Repo Cleanerを試しましたが、範囲を指定できません。
したい
- で歴史をたどる
ForkPoint..HEAD^ - コミットを書き直して、10M を超えるすべてのファイルを削除します
未使用のオブジェクトを git リポジトリから削除するには? それはこのようなものであるべきだと言います
BADFILES=$(find . -type f -size +10M -exec echo -n "'{}' " \;)
git filter-branch --index-filter \
"git rm -rf --cached --ignore-unmatch $BADFILES" ForkPoint..HEAD^
BADFILESしかし、に存在するファイルだけが含まれるわけではありませんHEADか?
たとえば、誤って をコミットしHUGE_FILE、後でそのファイルを削除する別のコミットを行った場合、現在の作業ツリーに表示されないため、検索では が見つかりませんBADFILES。HUGE_FILEfind
Edit1: 現在、クローンで BFG を使用してから、フォークを元の ForkPoint に移動することを検討しています。fatRepoと与えられた場合、これは正しいコマンドslimRepoでしょうか?
mkdir merger ; cd merger ; git init
git remote add fat ../fatRepo
git remote add slim ../slimRepo
git fetch --all
git checkout fat/ForkPoint
git cherry-pick slim/ForkPoint..slim/branchHead
Edit2:チェリーピッキングはslimRepoでマージを処理できないため、チェリーピッキングは機能しませんでした。どうにかしてslimRepoの歴史をつぶして、単純にfatRepo/ForkPointにマージすることはできますか?
git <turn into a single commit> slim/rootNode..slim/ForkPoint
git checkout fat/ForkPoint
git merge slim/branchHead