【问题标题】:Git without local repository没有本地存储库的 Git
【发布时间】:2013-01-24 12:41:22
【问题描述】:

考虑以下情况(例如)20GB 目录存储在具有 20.1GB 可用磁盘空间的计算机上,并且我们希望将此目录置于版本控制之下。服务器可用于存储修订历史记录。

在 subversion 中,我们从服务器签出一个空目录,添加文件并提交它。这将创建与工作目录大小大致相同的 .svn 目录,以便它可以检测更改并创建差异。当您进行定期更改时,.svn 目录的大小不会随着时间而改变。

但是,在 git (git init .; git add .; git commit) 中尝试这个需要我们在本地存储完整的历史记录。随着定期更改(假设无法很好地压缩的大型二进制文件),.git 目录会不断增长,直到它不适合磁盘。

有没有办法操作 git 使其不在本地存储完整的历史记录;以便它只保留有关您正在处理的分支尖端的数据,并在每次需要有关历史修订或其他分支的信息时查询远程服务器?

注意:我知道 .git 目录的压缩效果更好,您可以在它变得比 .svn 目录大之前进行大量修改 - 问题是它会随着时间的推移而增长,而 .svn 不会

【问题讨论】:

  • 如果您的项目有 20GiB 的源代码,那么您面临的问题不是技术问题。您需要将项目分解为更小的组件。 (二进制文件不属于 VCS。)
  • Git 不是为任意文件设计的版本控制文件系统?
  • 它确实是为保存任意文件而设计的。 IMO 选择存储非文本文件是一个错误。还有其他工具更适合此类文件。
  • 哪些工具适用于版本控制的二进制文件?
  • 我不知道有什么工具可以很好地对二进制文件进行版本控制,就像文本文件受版本控制一样。以保持一致修订的方式存储二进制文件是另一回事。对于可执行文件,任何体面的包管理系统都可以(例如 dpkg、rpm、pkg)。

标签: git


【解决方案1】:

根据你想做什么,这些答案可能会给你一个线索Browse and display files in a git repo without cloning。一般来说,有几种解决方案

  • 如果您有 ssh 访问权限,则使用远程副本。
  • 使用访问 API,例如 GitHub 提供的 API。
  • 使用“浅克隆”:git clone --depth=1

【讨论】:

    【解决方案2】:

    GIT 是一个分布式 CVS。这种 DCVS 的核心是它们在本地存储历史记录。

    你无法改变它。

    【讨论】:

    • 但这正是 SparcleShare 正在做的事情。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2015-07-14
    • 2015-02-02
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多