git
› Pro Git
› Atlassian Git Tutorial
› Pro Git 简体中文翻译
› GitX
arrowna
V2EX  ›  git

git 仓库越来越大了,怎么办?

  •  
  •   arrowna · Jun 1, 2016 · 9441 views
    This topic created in 3819 days ago, the information mentioned may be changed or developed.

    git status 花了很长时间,如果 html 文件再增加 100 倍, git staus 是不是要好几分钟呢:(

    耗费了 5.18 秒以枚举未跟踪的文件。'status -uno' 也许能提高速度, 但您需要小心不要忘了添加新文件(参见 'git help status')。 修改尚未加入提交(使用 "git add" 和 /或 "git commit -a")

    29 replies  •  2016-08-21 01:54:31 +08:00
    ffffwh
    ffffwh
    Jun 1, 2016
    1
    机械盘?
    crazystory
    crazystory
    Jun 1, 2016
    2
    100 倍???
    wweir
    wweir
    Jun 1, 2016
    3
    只在开机第一次进入慢的路过
    assassinpig
    assassinpig
    Jun 1, 2016
    4
    拆分???
    clino
    clino
    Jun 1, 2016
    5
    git gc 一下试试看
    另外如果有很多不需要纳入版本管理的就写到 .gitignore 里看看能不能改善点
    另外你再大应该也没有以前我们这里把整个 android 平台代码放在一个 git 库这样大
    arrowna
    arrowna
    OP
    Jun 1, 2016
    6
    @ffffwh 对,现在有 3000 个文件了。。。
    arrowna
    arrowna
    OP
    Jun 1, 2016
    7
    @clino 你们做 rom 的?
    ffffwh
    ffffwh
    Jun 1, 2016
    8
    要不先上 SSD 试试..
    GPU
    GPU
    Jun 1, 2016
    9
    openwrt 的仓库也是挺大的。
    eliteYang
    eliteYang
    Jun 1, 2016❤️1
    10
    以前删掉的文件可以清理下了,参见: https://help.github.com/articles/remove-sensitive-data/
    hzlzh
    hzlzh
    Jun 1, 2016
    11
    换电脑。
    gkiwi
    gkiwi
    Jun 1, 2016
    12
    “耗费了 5.18 秒以枚举未跟踪的文件”

    如果只是这个的话,是不是应该在.gitignore 中描述出来?
    arrowna
    arrowna
    OP
    Jun 1, 2016
    13
    @gkiwi 不是 gitignore 的关系, 3000 个文件可能有点多。。。
    egen
    egen
    Jun 1, 2016
    14
    git 是设计用来管理 linux kernel 的, 3000 个文件数量并不算多
    应该还是机械盘的问题,换电脑吧
    int64ago
    int64ago
    Jun 1, 2016
    15
    这……怎么会每次都改这么多文件?!写 Java 的也不会改这么多啊(我就是故意黑 Java ...)

    如果真是这样,你可以考虑下使用姿势了:

    - 是否 Git 被你用来备份而不是版本控制 & 协作?
    - .gitignore 是否把很多临时文件包含了?
    - 经常边写边全局格式化代码?

    其实只要保证:每次修改的都是有意义的且跟 commit log 对应的,经常性的同时改几百个是很罕见的
    gkiwi
    gkiwi
    Jun 1, 2016
    16
    @arrowna 为什么会有 3000 个未跟踪的文件呢? 5 秒时间是不是都用来打印文件路径了?每次 commit 之后, status 不应该是 0 文件么?这 3000 个是不是编译后的文件??
    int64ago
    int64ago
    Jun 1, 2016
    17
    貌似你说的是全部文件,我以为是改动的……

    不过 3000 肯定很少了,应该是磁盘的锅吧
    julyclyde
    julyclyde
    Jun 1, 2016
    18
    status 和 repo 大小没关系吧?只是比较 working directory 和 HEAD 的区别
    otakustay
    otakustay
    Jun 1, 2016
    19
    我随便一个项目轻松 4000+文件, git status 都是秒出的,肯定不是文件多的问题,纯粹是要打印出 3000 行比较慢而已吧
    zealic
    zealic
    Jun 1, 2016
    20
    上万文件都没有问题
    上 SSD 吧
    wawehi
    wawehi
    Jun 1, 2016
    21
    html 文件如果是静态的分出去单独弄一个项目呗
    current
    current
    Jun 1, 2016
    22
    没办法。忍。。 checkout 一次十多分钟的路过。。
    chuxiwen
    chuxiwen
    Jun 1, 2016
    23
    我的一个 repo 里有 19039 个文件。。。总共 939 MB 。。。毫无压力 。。。
    JulyXing
    JulyXing
    Jun 1, 2016
    24
    习惯空闲时间执行 git gc
    hcwhan
    hcwhan
    Jun 1, 2016
    25
    现在的项目 40~50g
    hcwhan
    hcwhan
    Jun 1, 2016
    26
    当然了 不止一个项目 很多项目 分公用平台代码 和 私有产品代码 使用 Android 常用的 repo 管理
    Lullaby
    Lullaby
    Jun 1, 2016
    27
    才 3000 。。。绝对算少的
    git status 也不至于每次都全量遍历
    电脑缘故吧
    arrowna
    arrowna
    OP
    Jun 2, 2016
    28
    @chuxiwen 内核么?
    chuxiwen
    chuxiwen
    Aug 21, 2016 via iPhone
    29
    @arrowna 一系列的 xml 文件。简单的理解和 business rules 差不多,每个星期大概有一百多个文件被添加,更改。我们不会删除文件。每二到三个月会一次生成一到两千个文件。所有这些文件都是通过一个 git repo 进行管理的。

    现在我们开始推 devops ,会把这个巨大的 repo 按照 business logic 分成更小的 repo ,前后都有 docker containers 对那些 xml 文件进行批处理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   937 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 22:41 · PVG 06:41 · LAX 14:41 · JFK 17:41
    ♥ Do have faith in what you're doing.