1

由几个模块组成的大项目被拆分为

git filter-branch -f --index-filter "git rm -r -f --cached \
--ignore-unmatch $(ls -w 100500 -xd ^(editor|shared|thirdparty) )" \
--prune-empty -- --all

以及将其余模块的类似命令放入 2 个项目AB

原始(未拆分)副本的 .git 存储库大小为100MbA中 .git 的大小为89MbB中 .git 的大小为110Mb

对于项目AB,我使用清理作为

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 倍。

我的假设有问题吗?也许我们在项目AB中有重复项?我们如何检查并找到重复的对象?

提前致谢!

4

1 回答 1

0

你试过重新包装你的包裹吗?每次我需要删除 git 中的悬空对象时,我都会使用以下命令

rm -rf .git/refs/original/*
git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune
于 2013-03-20T03:38:05.013 回答