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

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

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

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

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

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

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

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

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