如何阻止git存储库太大

时间:2019-11-03 10:20:02

标签: git bitbucket

提交几周后,我的Matlab代码存储库的.git文件达到1-1.5 GB的大小。如何控制git注册表的大小?

作为最佳实践,我已经做的是:

  1. 避免使用Matlab在模拟过程中写入的大量文件来使存储库混乱,这可以通过更新.gitignore文件来避免提交/推送它们来完成

  2. 避免包含需要大量提交的二进制或Office文件,

  3. 定期使用

    之类的命令
    git reflog expire --all --expire=now
    git gc --prune=now --aggressive
    

    清理注册表

我认为正在发生的事情是,每当matlab模拟某些东西并编写许多文本文件或.mat变量时,git就会跟踪所有更改。给它一个星期,存储库将超过1.5 GB。

我应该只将实际的“代码”保留在存储库中,并避免保存任何变量吗?

2 个答案:

答案 0 :(得分:0)

您可以将数据和代码分开, 像这样的文件树:

\ project

\ project / code / matlab_files.m

\ project / code / .git

\ project / data / matlab_data_files

这样,您就不会将数据推送到github。推送之前,请确保在matlab中清除变量。这可以通过关闭Matlab或使用“清除所有”命令来完成。 要保留数据吗?将其写入/ project / data文件夹。

答案 1 :(得分:0)

find .git -name pack-*.idx -exec git verify-pack -v {} +

将列出所有包装的内容,并给出包装中每个零件的实际尺寸。为了将姓名与姓名相关联,最有效的方法可能是联接,

join <(find .git -name pack-*.idx -exec git verify-pack -v {} + | sort) \
     <(git rev-list --all --objects | sort) \
| sort -nk4,4

对象类型(treeblobcommit之后的字段是工作树中结果的完整大小,其后一个是,第四个字段是其增量在数据包中所占的大小。更改顺序,按文件排序很容易,这里是按文件显示文件和数据的相关位的

join <(git rev-list --all --objects | sort ) \
     <( find .git -name pack-*.idx -exec git verify-pack -v {} + \
        | awk '$2=="blob" { print $1,$3,$4 } ' \
        | sort) \
| sort -k2 -nk4