考虑这样一种情况(例如)一个 20GB 的目录存储在一台有 20.1GB 可用磁盘空间的计算机上,我们希望将该目录置于版本控制之下。服务器可用于存储修订历史。
在 subversion 中,我们从服务器 check out 一个空目录,添加文件,然后提交。这将创建与工作目录大小大致相同的 .svn 目录,以便它可以检测更改并创建差异。当您进行定期更改时,.svn 目录的大小不会随着时间的推移而改变。
但是,在 git 中尝试此操作(git init .; git add .; git commit)需要我们在本地存储完整的历史记录。随着定期更改(假设压缩效果不佳的大型二进制文件),.git 目录会不断增长,直到无法容纳在磁盘上。
有没有一种方法可以操作git,使其不在本地存储完整的历史记录;以便它只保留有关您正在处理的分支的尖端的数据,并在每次需要有关历史修订或其他分支的信息时查询远程服务器?
注意:我知道 .git 目录压缩得更好,您可以在它变得比 .svn 目录更大之前进行大量修改 - 问题是它会随着时间的推移而增长,而 .svn 不会
最佳答案
根据您想做什么,这些答案可能会给您一些线索 Browse and display files in a git repo without cloning .一般来说,有几种解决方案
- 如果您具有 ssh 访问权限,则使用远程副本。
- 使用访问 API,例如 GitHub 提供的 API。
- 使用“浅克隆”:
git clone --depth=1
关于没有本地存储库的 Git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501631/