如何处理大型 git 存储库?

2024-03-02

我目前正在使用 git 来构建大型存储库(大约 12 GB,每个分支的大小为 3 GB)。 该存储库包含大量二进制文件(音频和图像)。

问题是克隆和拉取可能需要很多时间。 特别是“解决增量”步骤可能非常非常长。

解决此类问题的最佳方法是什么?

我尝试删除增量压缩,正如它所解释的那样here https://stackoverflow.com/a/7153033/1393890在 .gitattributes 中使用 delta 选项,但它似乎并没有提高克隆持续时间。

提前致谢

Kevin


2015 年 4 月更新:Git 大文件存储 (LFS) https://github.com/blog/1986-announcing-git-large-file-storage-lfs(由 GitHub 提供)。

It uses git-lfs https://github.com/github/git-lfs (see git-lfs.github.com https://git-lfs.github.com/)并使用支持它的服务器进行了测试:lfs-测试服务器 https://github.com/github/lfs-test-server:
您只能将元数据存储在 git 存储库中,而将大文件存储在其他地方.


原始答案(2012)

针对大型二进制文件的一种解决方案没有太大改变,是将它们存储在不同的引用中(例如Nexus 存储库 http://www.sonatype.org/nexus/),并且版本仅是一个文本文件declares您需要哪个版本。
使用“工件存储库”比将二进制元素存储在sourcerepo(用于比较版本和分支之间的合并,这对于所述二进制文件没有多大用处)。

另一个更以 git 为中心的解决方案是git 附件 http://git-annex.branchable.com/:

git-annex允许使用 git 管理文件,而无需将文件内容检查到 git 中。
虽然这看起来有些矛盾,但在处理大于 git 当前可以轻松处理的文件时,无论是由于内存、时间还是磁盘空间的限制,它都是有用的。

但它与 Windows 不兼容。

更通用的解决方案可能是git 媒体 https://github.com/schacon/git-media,这还允许您将 Git 与大型媒体文件一起使用,而无需将媒体存储在 Git 本身中。

最后,最简单的解决方案是将这些二进制文件隔离在自己的文件中git 子模块 http://git-scm.com/book/en/Git-Tools-Submodules正如您在问题中提到的:这不是很令人满意,并且初始克隆仍然需要时间,但是父存储库的下一次更新将会很短。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理大型 git 存储库? 的相关文章

  • 如何使用 API 和 C# 将文件从 azure DevOps 服务器下载到指定路径

    我正在尝试使用 API 从 azure Devops 服务器下载文件 API 给出了成功响应 但是没有下载任何文件 如果我们删除格式参数 我们将获得带有文件链接的响应 单击该文件不会下载 示例代码 var personalaccesstok
  • php run git 收到“ssh 权限被拒绝”

    我正在尝试从浏览器中运行 git pull php 脚本 但我得到了 sh 连接到主机 git assembla com 端口 22 权限被拒绝 我的 PHP 脚本
  • `git add --patch` 和 `--word-diff`

    git add patch提供了一个很好的界面 用于检查未暂存的更改 然后仅暂存下一次提交中需要的更改 很好 除了一件事 没有明显的方法来选择哪个diff视图来使用 特别是 我希望能够配置git add patch以同样的方式向我呈现差异g
  • Github 版本如何生成存档文件名?

    我刚刚在 github 上为我的 NFQL 软件创建了版本 这是发布页面 https github com vbajpai nfql releases https github com vbajpai nfql releases 对于最新版
  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 我可以从命令行向 github 添加问题吗?

    我是 git 新手 我希望能够通过 github 绘制我的项目的计划和进度 问题是 这需要在 github com 上使用浏览器进行大量点击 并且我希望能够通过使用命令行程序来自动执行该任务 github 有命令行界面吗 有一个ghi ge
  • 无法将 android“gen”文件夹提交到 Git

    我在 eclipse 中使用 EGit 为我正在开发的 Android 项目提供 Git 支持 问题是 将我的项目提交到本地存储库后 我意识到 gen 文件夹没有被提交 因此 当我从 Git 存储库获取最新源代码后尝试在另一台计算机上打开该
  • 如何获取第一次提交的 Git diff?

    我创建了一个存储库 在其中创建了一个文件 在文件中放入了一些内容 然后提交了该文件 现在 我想查看该提交的差异 理想情况下应该显示添加的文件以及添加到其中的行 然而 git diff HEAD HEAD回报fatal ambiguous a
  • 有关多个远程存储库的 Git 状态

    我有一个脚本 如果我忘记在 40 多个存储库中提交或推送一些代码 它会通过电子邮件向我发送提醒 在我的两个项目中 我遵循了这些帖子中的答案 其中我设置了 git push 来推送到多个存储库 从多个远程位置拉 推 https stackov
  • web2py git 集成 - localhost 和 pythonanywhere

    我完全不知道如何将 Github 集成到 web2py 中 我在 USB 上安装了 web2py任何地方的Python http www pythonanywhere com web2py概述文档chapter3http web2py co
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • 当出现错误时如何删除远程分支?

    我尝试过以下命令 但失败了 git push origin next remote error denying ref deletion for refs heads next To blah git remote rejected nex
  • 返回到存储库中的特定修订后提交并推送更改?

    我们需要及时返回到某个特定的提交 一些意外的改变是为了掌握 尝试恢复它挖得太深 所以 master 的状态很糟糕 现在我们希望master回到66ada4cc61d62afc 根据git 恢复到某个提交 https stackoverflo
  • 如何查看 github 的 SSH 密钥?

    我最近收到一封来自 Github 的电子邮件 要求我检查我的 SSH 密钥 请检查您的钥匙并确保您 认出他们 如果您有任何疑问 请拒绝钥匙并 上传新密钥 如何在 ubuntu 11 10 上使用 git 检查我的密钥 您可以按照 GitHu
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • git checkout 到分支需要很长时间

    我使用的是 Ubuntu 17 10 并且使用 git 版本 2 14 1 每当我从 master 创建一个分支并尝试签出它 或从它签出到 master 时 都会花费大量时间 大约几分钟 有时接近 10 分钟 确实 我有几 GB 的数据 但
  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • Visual Studio Code 内置故事,用于查看 git 提交历史记录并对其内容进行比较

    In this https stackoverflow com questions 37899765 how can i view the git history in visual studio code 60013101 noredir
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol

随机推荐

  • 使用 Google App Engine 进行异步获取请求

    我正在阅读文档异步获取请求 https developers google com appengine docs python urlfetch asynchronousrequests在GAE中 Python 不是我的第一语言 因此我很难
  • 循环视图路径错误,Spring MVC

    我正在尝试做教程 gt http spring io guides gs serving web content http spring io guides gs serving web content 当我运行它时 它显示圆形视图路径 问
  • 使 Ruby 字符串不可变

    需要使我的程序中的某些 Ruby 字符串不可变 最好的解决方案是什么 写一个包装器String class The freeze方法对我不起作用 我看到freeze不允许您解冻该对象 以下是我的情况 我有一个类将字符串传递给回调 该字符串恰
  • PHP for 循环中允许的内存大小耗尽

    当我尝试在 PHP 中操作一个巨大的数组并将结果作为响应返回时 我遇到了致命错误HTTP POST 请求 允许的内存大小 536870912 字节已耗尽 我已经尝试过设置ini set memory limit 1 为了看看我是否得到结果
  • 如果绑定源为空,如何为图像设置默认源?

    我正在使用绑定作为源Image控制
  • 在eclipse中使用jsr305注释Findbugs没有发现bug

    我一直在尝试将 jsr 305 注释与 Findbugs 一起使用 特别是 CheckForNull 注释 它可以避免我刚刚发现的向客户报告的错误 我已将 jsr305 jar 和annotations jar 添加到我的构建路径中 但 f
  • 安排大 ETA 的 celery 任务

    我目前正在使用 celery 尝试未来的任务ETA http docs celeryproject org en latest userguide calling html eta and countdown功能和 Redis 代理 使用
  • 减少 Mercurial 中的存储库大小

    当我的团队使用 Mercurial 存储库中的源代码处理给定项目时 存储库的大小显然在增长 因此 通过网络克隆存储库变得越来越慢 是否有任何技术可用于删除较旧的提交或减小存储库的大小 以使克隆操作在慢速网络上更快 我们使用 Tortoise
  • 查找列表中最流行的单词

    我有一个单词列表 words all awesome all yeah bye all yeah 我想获得一个元组列表 3 all 2 yeah 1 bye 1 awesome 每个元组在哪里 number of occurrences w
  • Rails 中如何让 Low-Level caching 与 Association caching 协同工作?

    我目前正在开发一个使用 Rails 5 的项目 我想提高性能 所以我决定使用低级缓存 如下所示 class User lt ApplicationRecord has one profile def cached profile Rails
  • 当我尝试上传视频时,Youtube API v3 返回 401

    我使用 YouTube 的 ServiceAccount 上传器 我使用 Youtube API v3 我有简单的控制台应用程序 可将视频上传到 youtube String serviceAccountEmail var certific
  • ParNew gc 会阻止世界吗?

    我看到 GC 输出如下 2010 12 10T16 00 44 942 0800 1443 562 GC 1443 562 ParNew 201856K gt 17318K 201856K 0 0352970 secs 2113334K g
  • 如何在java中使用dd-mm-yyyy格式将字符串格式化为日期[重复]

    这个问题在这里已经有答案了 我需要一些支持 我希望将变量字符串转换为日期 变量日期的格式应为 dd MM yyyy import java util Date String a 2022 05 12 Date b should be dd
  • mapActivity 中出现 NoClassDefFoundError

    我的地图应用程序中出现此错误 您知道出了什么问题吗 我已经检查过 该包在我的 java 文件中是正确的 而且我已将谷歌地图的使用库放入我的应用程序标签中的 manifest xml 中 请帮忙 我花了几个小时来解决它 确保您已输入
  • Azure API 管理服务中的静态 IP 地址

    我已经做了一些谷歌搜索 但无法得到确认的答案 Azure API 管理服务是否提供静态 IP 地址 如果没有 我该如何配置 我问的原因是因为我的本地服务器仅接受来自白名单 IP 地址的请求 因此我们需要来自 Azure API 管理的请求的
  • mingw 链接器找不到 PathAppend

    当我尝试编译以下内容时 include
  • 自定义设计EditText

    我有定制设计EditText 搜索页面 xml
  • 如何在 Redux 中处理两个连续且依赖的异步调用?

    我通过调用操作异步获取帖子列表fetchPosts从一个组件开始componentDidMount 我希望 一旦相关减速器 更新状态 收到并处理该请求 就调用另一个操作fetchPostsMetaData 包含刚刚收到的帖子 id 的数组
  • 像 Google Play 商店一样折叠工具栏

    我想实现一个像 google Play 商店一样的折叠工具栏 我已经实现了一些功能 但这仅适用于纵向屏幕 这是我能够执行的操作的屏幕截图示例 现在我想做的是 当我将设备方向更改为景观模式时 它应该看起来完全像这样 所以我的主要问题是如何处理
  • 如何处理大型 git 存储库?

    我目前正在使用 git 来构建大型存储库 大约 12 GB 每个分支的大小为 3 GB 该存储库包含大量二进制文件 音频和图像 问题是克隆和拉取可能需要很多时间 特别是 解决增量 步骤可能非常非常长 解决此类问题的最佳方法是什么 我尝试删除