V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
justNoBody
V2EX  ›  程序员

git 仓库太大(文档库, 30g+)mbp 硬盘不太够了,有啥办法能让它体积变小一点?

  •  
  •   justNoBody · 2021-08-12 11:05:51 +08:00 · 4945 次点击
    这是一个创建于 1207 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我需要拉取最新的提交,又需要修改做推送。 我尝试过指定 depth 或者使用 iCloud 来解决,但都以不完美告终

    第 1 条附言  ·  2021-08-18 15:25:28 +08:00
    非常感谢大家的答复,我最近一直在尝试看怎么减小这个仓库。
    很遗憾,虽然最终缩小到了 23G,但我个人并不满意。
    我首先尝试了 git gc,运行完成后,实际效果很差,并没有缩小多少体积。
    又尝试增加了 git lfs,但我没注意的是,我这个仓库的文件不是反复上传的,上传文件的重复率很低。所以我通过 git clone --depth 1 下载得到的大小也是 20G+

    至此,再一次陷入困境。至于大家所说换 svn 的事儿,这不是我能决定的
    第 2 条附言  ·  2021-08-18 15:41:07 +08:00
    34 条回复    2021-08-18 14:40:42 +08:00
    smallpython
        1
    smallpython  
       2021-08-12 11:12:13 +08:00   ❤️ 1
    使用 svn 替换 git
    liuky
        2
    liuky  
       2021-08-12 11:13:02 +08:00
    wangyzj
        3
    wangyzj  
       2021-08-12 11:13:56 +08:00
    gc
    liuky
        4
    liuky  
       2021-08-12 11:16:23 +08:00
    你这个是实际文档 30G(纯文档理论也就最多几百兆), 还是加上 .git 文件夹, .git 文件夹是包含历史提交记录的,
    cmdOptionKana
        5
    cmdOptionKana  
       2021-08-12 11:16:24 +08:00
    如果需要历史版本,可改用坚果云或 dropbox 。如果不需要历史版本,改用普通的同步盘就可以了。
    yitingbai
        6
    yitingbai  
       2021-08-12 11:20:05 +08:00   ❤️ 4
    @smallpython 人家是来解决问题的, 不是来找麻烦的, 你这么回答, 还不如直接跟他说买一块移动硬盘
    wellsc
        7
    wellsc  
       2021-08-12 11:20:06 +08:00   ❤️ 1
    放过 git 吧
    liuidetmks
        8
    liuidetmks  
       2021-08-12 11:26:54 +08:00
    感觉 git 同步文档不合适,文档 里面有大量图片,每次修改一个文字,也会重新存储整个 文档文件.
    masterclock
        9
    masterclock  
       2021-08-12 11:29:41 +08:00
    微软的 git,gvfs 那一类的是不是可以解决?
    idealhs
        10
    idealhs  
       2021-08-12 11:30:26 +08:00   ❤️ 3
    使用微软的 GVFS (Git Virtual File System),微软使用该 Git 定制版本管理自己的超大仓库。GVFS 不会把所有内容都存在本地,在使用的时候才会拉取。使用操作和 Git 基本无差别,也支持为 Git 开发的各种 GUI 。
    lingxi27
        11
    lingxi27  
       2021-08-12 11:31:08 +08:00   ❤️ 3
    养成好习惯,不要往 git 里面提交二进制内容
    clino
        12
    clino  
       2021-08-12 11:32:56 +08:00   ❤️ 2
    git clone --depth 1
    clino
        13
    clino  
       2021-08-12 11:33:35 +08:00
    什么类型的文档?
    dangyuluo
        14
    dangyuluo  
       2021-08-12 11:44:49 +08:00   ❤️ 1
    是不是太多大文件了?考虑下用 LFS
    littlewing
        15
    littlewing  
       2021-08-12 11:47:24 +08:00
    不要用 git 来存非文本文档,换 svn 吧
    loophole12
        16
    loophole12  
       2021-08-12 13:28:18 +08:00 via Android
    如果.git 目录太大的话可以考虑截断历史
    happinessnch
        17
    happinessnch  
       2021-08-12 13:35:16 +08:00
    30G 换 SVN 感觉也大了点,弄个 FTP 不行吗?为啥一定要版本控制。
    justNoBody
        18
    justNoBody  
    OP
       2021-08-12 13:53:29 +08:00
    @liuky #4 按 gitlab 统计来看,实际文档大小应该是 7g+
    justNoBody
        19
    justNoBody  
    OP
       2021-08-12 13:55:01 +08:00
    @clino #12 #13 --depth 1 提交的时候会被拒绝的嘛 文档类型有点多,几乎所有常见的类别都有了。
    cloverzrg2
        20
    cloverzrg2  
       2021-08-12 14:33:34 +08:00
    我的话,估计直接就换仓库了
    把 git 仓库改名为 xx-old,然后本地删掉.git 目录,执行 git init,新起个项目,添加 remote,push
    cloverzrg2
        21
    cloverzrg2  
       2021-08-12 14:34:03 +08:00
    不知道你这个文档库是干嘛的
    dayeye2006199
        22
    dayeye2006199  
       2021-08-12 15:11:01 +08:00
    1G 的文档大概 8 千万个中文字,7G 的文档大约有 5 亿 6 千万字。LZ 的这个文档大概水平相当于《永乐大典》。。一部宏伟的码农巨著。。
    dezng
        23
    dezng  
       2021-08-12 15:18:26 +08:00   ❤️ 1
    https://git-lfs.github.com/
    是在找这个吗?
    NouveauNom
        24
    NouveauNom  
       2021-08-12 15:33:38 +08:00
    建议挂移动硬盘,mbp2015 及之前可以自己升级硬盘。
    xx6412223
        25
    xx6412223  
       2021-08-12 15:52:32 +08:00   ❤️ 1
    这就是 svn 该做的事情
    xz410236056
        26
    xz410236056  
       2021-08-12 16:35:41 +08:00
    试试 git -b -d?(-b 克隆指定分支,-b 只保留最近的一部分版本(比如 100 个))
    clino
        27
    clino  
       2021-08-12 17:00:08 +08:00
    @justNoBody 怎么会被拒绝,我经常这么用啊
    如果要看更多历史可以 git fetch --depth 10,要看完整历史可以 git fetch --unshallow
    Raven316
        28
    Raven316  
       2021-08-12 17:15:51 +08:00
    主要是你每改一个 2 进制文档,都会存一个备份。。所以实在太大了
    adoal
        29
    adoal  
       2021-08-12 20:58:29 +08:00 via iPhone
    如果文档类型以 Microsoft Office 为主,用 Sharepoint 吧
    dingshenghuang
        30
    dingshenghuang  
       2021-08-12 23:42:46 +08:00
    如果你是一个版本本身内容就很大,那没辙; 如果你具体某个版本比较小,但是仓库 clone 下来发现占用存储比较大,开下 Git LFS 可以做到很好的优化
    BeautifulSoap
        31
    BeautifulSoap  
       2021-08-12 23:48:10 +08:00 via Android
    lz 一开始选版本管理工具就选错了。这种情况你一开始就该选 svn 而不是 git
    要么换软件要么就像上面说的用 gvfs
    Showfom
        32
    Showfom  
       2021-08-12 23:52:53 +08:00
    https://github.com/cdnjs/cdnjs

    这个仓库快 500G 了= = 估计年底又得换硬盘了
    greatbody
        33
    greatbody  
       2021-08-13 10:13:42 +08:00
    我这个建议适合不需要历史记录的情形。

    将文件夹中的内容按照类型分别拆分到不同的目录,分别设置不同的 git 项目。
    justNoBody
        34
    justNoBody  
    OP
       2021-08-18 14:40:42 +08:00
    @idealhs #10 依赖于 windows 系统,对于 linux 和 macOS 小伙伴不太友好吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:33 · PVG 14:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.