我有一个 git 存储库,其中.git
文件夹是7MB。然后我添加并提交了一个 .exe 文件,该文件是16MB其次是:
git gc --aggressive && git prune
经过上述我的.git
文件夹现在是23MB.
接下来我做了一个git rebase -i
并选择了drop:
在提交时(c8185ff)引入了 16MB 文件,我完成了变基并再次运行:
git gc --aggressive && git prune
现在当我测量.git
文件夹仍然是23MB.
Should git rebase
上面执行的操作不会从历史记录中完全删除提交 - 就好像该文件从未被引入 - 因此带来.git
文件夹回到7MB size?
我还尝试对存储库进行新的克隆,大小仍然是23MB- 我假设进行新克隆时引用日志将被清除。
默认情况下,git gc
仅修剪loose超过 2 周的对象。
要对所有对象强制修剪,请使用--prune=all https://git-scm.com/docs/git-gc#git-gc---pruneltdategt:
git -c gc.reflogExpire=now gc --prune=all
但是,如果该对象仍然可以通过任何引用(远程引用,例如origin/master
例如,或引用日志),它不会被修剪。
这就是为什么我们还必须设置gc.reflogExpire https://git-scm.com/docs/git-config#git-config-gcreflogExpire配置为now
.
(For git prune
[GC后不需要],它是--expire https://git-scm.com/docs/git-prune#git-prune---expirelttimegt)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)