V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
arrowna
V2EX  ›  git

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

  •  
  •   arrowna · 2016-06-01 09:53:32 +08:00 · 8424 次点击
    这是一个创建于 3122 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    现在我们开始推 devops ,会把这个巨大的 repo 按照 business logic 分成更小的 repo ,前后都有 docker containers 对那些 xml 文件进行批处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3523 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.