私のリポジトリはオープン ソース プロジェクトからフォークされているため、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_FILE
find
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