我有一个300 MB的git repo.我目前检出的文件重2 MB,git repo重298 MB.这基本上是一个仅限代码的回购,重量不应超过几MB.
最有可能的是,有人在某个时候偶然犯了一些重文件(视频,巨大的图像等),然后将它们删除......但不是从git中删除,所以我们有无用大文件的历史.如何在git历史记录中追踪大文件?有400多个提交,所以一个接一个将是耗时的.
注意:我的问题不是关于如何删除文件,而是如何在第一时间找到它.
我最近遇到了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在我的远程仓库上运行此命令,还是有办法将此更改推送到存储库?
我有一个Git存储库,里面有几个巨大的媒体文件(图像和音频文件).这些媒体文件的几个版本已连续提交给回购.这些文件是相同资产的连续精炼版本,并且它们具有相同的名称.
我想只保留Git存储库中的最新版本,因为它变得太大了.
最简单的方法是什么?
如何将这些更改正确地传播到上游存储库?