いくつかのモジュールで構成される大きなプロジェクトは、次を使用して分割されました
git filter-branch -f --index-filter "git rm -r -f --cached \
--ignore-unmatch $(ls -w 100500 -xd ^(editor|shared|thirdparty) )" \
--prune-empty -- --all
および2つのプロジェクトAとBへの残りのモジュールの同様のコマンド
元の (分割されていない) コピーの .git リポジトリのサイズは100Mb、Aの .git のサイズは89Mb、Bの .git のサイズは110Mb です。
プロジェクトAとBの両方で、クリーンアップを次のように使用しました
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
2 つのコピーに分割されている元のリポジトリのサイズが、分割の合計よりも2 倍小さい理由がよくわかりません。
BでAからいくつかのファイルの検索を実行しようとしましたが、 Aにはそのようなファイルはなく、 Bには一致することがわかりました。したがって、ファイル(少なくともそれらのファイル)は複製されていないようです。私は次のようなコマンドを使用しました
git log --all -- **/CryptoInterface.java
ファイルを探すために。
したがって、質問 - 元のプロジェクトが 100 MB の場合、A は 30 MB、B は 70 MB、または少なくともサイズ A と B の合計が元の 100 MB の 2 倍にならないと仮定します。
私の仮定に何か問題がありますか?おそらく、プロジェクトAとBに重複がありますか? どうすればそれを確認し、重複したオブジェクトを見つけることができるでしょうか?
前もって感謝します!