是的,你可以完全摧毁历史上的dev
和it
分支。它可能不会更改存储库大小,并且不能解决核心问题:您的回购臃肿。有很多方法可以减少存储库的大小。
除非你的其他分支从主分支似地分歧,就像他们存储完全不同和大型内容,而且从来没有合并到主,从历史中删除不会让存储库大小太大的区别。这是因为Git历史都是建立在彼此之上的。
一个Git仓库的历史看起来是这样的:
J - K - L T - U [dev]
/ \ /
A - B - C - H - I - M - N - O - Q - R - S - V [master]
\ / \
---------D - E - F - P X - Y [it]
分支是字面上的分支。当分支合并时,即使在分支被删除之后分支的历史仍然存在。新的分支机构共享以前的所有历史。所以master
依赖于它之前的每个提交。那么dev
和it
。销毁历史记录只会为您节省t
和u
,因为master
需要所有历史记录的其余部分。
相反,你需要把你的回购饮食。
如果您的存储库是7.5演出其可能充满大型文件:视频,图像,音频,办公文档,大型压缩文件等... Git很难与大型二进制文件,包括压缩文件,因为它不能存储差异。每次他们改变它都必须存储一个全新的副本。这可能会迅速膨胀存储库大小。
幸运的是,有一个解决方案,git-lfs
提供“大型文件存储”。这使您可以透明地将大文件的内容存储在云中,但仍可以跟踪其在Git中的更改,并防止您的存储库臃肿。你可以使用它来存储你想存储的任何新的大文件,但是那些已经存储的文件又如何呢?
BFG Repo-Cleaner允许您重写您的存储库以执行诸如从历史记录中删除文件,or change them to use git-lfs。
所以你想运行BFG与--convert-to-git-lfs
选项。你必须弄清楚你的回购中的哪些文件很大,并告诉BFG过滤它们。
你不能“保留历史记录,也删除它”。为了让git了解历史,它必须记录发生的事情。您是否将大型二进制文件保存在存储库中?在这种情况下,git会存储每个版本文件的完整副本。运行'git gc'会减小大小吗? – Atsch