如何减少具有巨大提交历史记录的.git文件夹的大小?

时间:2017-08-24 14:24:44

标签: git github

由于.git文件夹的大小变得非常繁重,我们每天都在大量工作并提交大量数据。在我们的系统上执行 pull 命令时,由于.git文件夹的大小,需要花费很多时间。我们如何清理或减少这个git仓库的大小?

2 个答案:

答案 0 :(得分:0)

您需要确定您的存储库中是否存在固有的大小内容 - 例如太多大型二进制文件 - 或者垃圾收集是否会修复它。

进行垃圾收集,看看你的回购有多大。

如果这不能解决问题,请查看@sauerburger提供的Atlassian链接,或根据您在那里找到的内容进行其他一些Google搜索。

(这些步骤的详细信息有意留作用户练习。)

答案 1 :(得分:0)

如果大多数文件大小都被.git文件夹中的旧提交占用,而不是当前文件,那么您可以做的是将特定的最近提交作为根进行重新绑定,保留所有文件和提交。指出但要摆脱旧的历史。

请务必先备份所有内容!

引用此答案(https://stackoverflow.com/a/24153726/7070218):

  

这里有一种方法,假设您当前的工作被调用   branchname。每当我做一个大的rebase时,我喜欢使用temp标签   仔细检查没有变化,并标记一点我可以   如果出现问题,我会回到reset(不确定这是否是标准的   程序与否,但它适用于我):

     
git tag temp

git checkout 10004
git checkout --orphan new_root
git commit -m "set new root 10004"

git rebase --onto new_root 10004 branchname

git diff temp   # verification that it worked with no changes
git tag -d temp
git branch -D new_root
     

要删除旧分支,您需要删除所有标记和分支   标签上面;然后

git prune
git gc
     

将从您的回购中清除它。

     

请注意,在您之前,您将暂时拥有两份副本   有gc'd,但这是不可避免的;即使你做标准的壁球   和rebase你还有两份副本,直到rebase   饰面。