我最近遇到了Bitbucket repo的大小限制.我跟着无数其他问题回答了如何清理你的git repo并最终使用BFG来删除一些糟糕的提交.
这很好用,但是,我注意到在运行git计数后,垃圾中有大量的空间.所以我运行了一个简单的git gc.然而,这没有什么可以清理垃圾.
经过一番挖掘后,我找到了以下命令:
git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 \
-c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"
Run Code Online (Sandbox Code Playgroud)
运行此操作导致垃圾在本地清理.但是,我仍然有远程回购的问题.我现在需要让Bitbucket在我的远程仓库上运行此命令,还是有办法将此更改推送到存储库?
几个月前我做了一些糟糕的提交后,我的bitbucket repo变得非常大(1.6 GB).我没有意识到情况有多严重(noob ..),因为一个同事试图克隆它并且失败了(太大了).
我仔细阅读了这篇文章为什么我的git存储库如此之大?并做了以下(如@Vi建议):
检测我的仓库历史记录中的胖文件
git rev-list --all --objects | sed -n $(git rev-list --objects --all | \
cut -f1 -d' ' | \
git cat-file --batch-check | \
grep blob | \
sort -n -k 3 | \
tail -n40 | \
while read hash type size; do
echo -n "-e s/$hash/$size/p ";
done) |
sort -n -k1
Run Code Online (Sandbox Code Playgroud)
假设其中一个胖文件是mybigfile.gz
从repo中删除mybigfile.gz
git filter-branch -f --index-filter \
'git rm --force --cached --ignore-unmatch mybigfile.gz' \
-- …Run Code Online (Sandbox Code Playgroud)我有一个本地仓库。我.git用du -csh <foldername>命令检查了文件夹的大小。它是 168 MB。我把它推送到我的 bitbucket 仓库。我检查了下载的存储库大小仅为 134 mb。
这怎么可能?