没有本地存储库的Git

没有本地存储库的Git,git,Git,考虑这样一种情况,即(例如)一个20GB目录存储在一台有20.1GB可用磁盘空间的计算机上,我们希望将该目录置于修订控制之下。服务器可用于存储修订历史记录 在subversion中,我们从服务器签出一个空目录,添加文件,然后提交它。这将创建与工作目录大小大致相同的.svn目录,以便它可以检测更改并创建差异。当您进行常规更改时,.svn目录的大小不会随时间而改变 然而,在git(git init.;git add.;git commit)中尝试这一点需要将完整的历史记录存储在本地。随着常规更改的进

考虑这样一种情况,即(例如)一个20GB目录存储在一台有20.1GB可用磁盘空间的计算机上,我们希望将该目录置于修订控制之下。服务器可用于存储修订历史记录

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

然而,在git(git init.;git add.;git commit)中尝试这一点需要将完整的历史记录存储在本地。随着常规更改的进行(假设压缩不好的大型二进制文件),.git目录将不断增长,直到它无法装入磁盘

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


注意:我知道.git目录的压缩效果更好,您可以在它比.svn目录更大之前进行大量的修改-问题是它会随着时间的推移而增长,而.svn则不是。这种DCV的核心是将其历史存储在本地


你不能改变这一点。

根据你想做什么,这些答案可能会给你一个线索。一般来说,有几种解决方案

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

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