使用 Git 管理大型二进制文件

2024-01-29

我正在寻找有关如何处理我的源代码(Web 应用程序)所依赖的大型二进制文件的意见。我们目前正在讨论几种替代方案:

  1. Copy the binary files by hand.
    • 专业人士:不确定。
    • 反对:我强烈反对这一点,因为它增加了设置新站点/迁移旧站点时出错的可能性。建立了另一个障碍。
  2. Manage them all with Git.
    • 优点:消除了“忘记”复制重要文件的可能性
    • 反对:使存储库膨胀并降低管理代码库的灵活性,并且签出、克隆等将需要相当长的时间。
  3. Separate repositories.
    • 优点:签出/克隆源代码的速度一如既往地快,并且图像正确地存档在自己的存储库中。
    • 魂斗罗:消除了拥有的简单性唯一的项目上的 Git 存储库。它肯定引入了一些我没有想到的其他事情。

您对此有什么经验/想法?

另外:是否有人有使用多个 Git 存储库并在一个项目中管理它们的经验?

这些文件是用于生成包含这些文件的 PDF 的程序的图像。这些文件不会经常更改(如数年),但它们与程序非常相关。如果没有这些文件,程序将无法运行。


我发现git 附件 http://git-annex.branchable.com/最近我觉得很棒。它专为高效管理大文件而设计。我用它来收藏我的照片/音乐(等)。 git-annex 的开发非常活跃。文件的内容可以从 Git 存储库中删除,Git 仅跟踪树层次结构(通过符号链接)。但是,要获取文件的内容,在拉/推之后还需要执行第二步,例如:

$ git annex add mybigfile
$ git commit -m'add mybigfile'
$ git push myremote
$ git annex copy --to myremote mybigfile ## This command copies the actual content to myremote
$ git annex drop mybigfile ## Remove content from local repo
...
$ git annex get mybigfile ## Retrieve the content
## or to specify the remote from which to get:
$ git annex copy --from myremote mybigfile

有许多可用的命令,并且网站上有很棒的文档。软件包可在Debian http://en.wikipedia.org/wiki/Debian.

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

使用 Git 管理大型二进制文件 的相关文章

  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器
  • Jenkins 多分支:更改 Groovy 的工作描述

    我在詹金斯的多分支项目工作正常 但我想修改job描述 默认情况下为 完整项目名称 xxxx 以更有意义 我可以使用以下命令轻松更改构建描述currentBuild当我的变量Jenkinfile已执行 但我不知道如何修改父作业描述 我的用例是
  • Sublime Text 2 的 git 提交错误[重复]

    这个问题在这里已经有答案了 我正在 Udacity 上学习 如何使用 Git 和 GitHub 课程 我正在按照示例进行操作 但遇到了问题 我自己尝试通过谷歌搜索和反复试验来解决问题大约两个小时 我认为是时候在 StackOverflow
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • PyCharm和源代码控制,.idea目录,提交还是不提交,这就是问题

    我开始了新的PyCharm http www jetbrains com pycharm 项目并希望对其进行版本控制水银 http mercurial selenic com 项目目录中有一个 idea 目录 其中包含以下文件 以及我对是否
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看
  • 如果我想将分支合并到主干上,“svn merge --reintegrate”和不重新集成的 svn merge 有什么区别

    In the svn book http svnbook red bean com en 1 7 svn ref svn html svn ref svn sw reintegrate它说merge s reintegrate是 将源 UR
  • 无法使用 Git Bash 对 Visual Studio Team Services 进行身份验证

    由于身份验证失败 我无法对 Visual Studio Team Services VSTS 上的远程存储库运行任何命令 我可以通过 Visual Studio 进行拉取等操作 但只能通过 Visual Studio 不通过 Git Bas
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜
  • 从远程获取上个月在 git 分支上提交的文件列表

    我正在尝试获取上个月在 master 分支的 github 存储库上更改的所有文件的列表 我的本地克隆没有可以追溯到那么远的日志 因此当我运行以下命令时 git diff stat 1 month ago 我收到一条警告消息和一小部分更改
  • 在 Hadoop MapReduce 中为二进制文件创建自定义 InputFormat 和 RecordReader

    我正在编写一个 M R 作业 该作业处理以二进制格式编写的大型时间序列数据文件 如下所示 此处换行以提高可读性 显然 实际数据是连续的 TIMESTAMP 1 TIMESTAMP 1 TIMESTAMP 2 TIMESTAMP 2 TIME
  • 仅将单个文件放入 git 子模块/存储库中

    我在 git 源代码存储库中有一个特定文件 其中包含生产设置 密码 我想限制此文件 以便只有制作团队的成员才能看到它 但是 我想控制它的变化 我考虑过在 git 中使用子模块 然后限制对新存储库的访问 然而 git 似乎需要子模块的整个子目
  • 如何将更改提交到另一个预先存在的分支

    我刚刚对一个分支进行了更改 如何将更改提交到另一个分支 我正在尝试使用 git checkout the commmit to the changed branch b the other branch 但是 我认为这不是正确的做法 因为在
  • 从 Eclipse 的历史视图中删除 ORIG_HEAD 和 FETCH_HEAD

    我最近开始使用 Eclipse Kepler 和 EGit 插件 这些分支不是我习惯的 有没有办法永久阻止这些分支的创建 我尝试手动删除它们 但它不起作用 并且我不想在下次获取或变基时保留它们 据我从对您问题的评论中了解到 您只希望这些参考

随机推荐