由几个模块组成的大项目被拆分为
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
为了查找文件。
所以问题 - 如果原始项目是 100mb,我假设 A 应该像 30mb,B 应该像 70mb 或至少 A 和 B 大小的总和不应比原始 100mb 大 2 倍。
我的假设有问题吗?也许我们在项目A和B中有重复项?我们如何检查并找到重复的对象?
提前致谢!