[英]Why is this git shallow clone bigger than I expected?
我有一个大约24MB的repo,但项目中的文件实际上只有2MB左右。 我的印象是,使用--depth 1的浅层克隆几乎可以让我接近2MB的实际文件(没有整个回购)。
当我做浅层克隆时,新的repo只显示当前分支但是大小相同(24MB)并且用gitx查看repo我可以看到整个历史记录回到初始提交。
我想要一种方法来获取文件的当前状态(用于上传到服务器)而没有所有历史记录。 我做错了什么或只是误解了浅层克隆的目的?
如果这是一个本地克隆,那么克隆可能通过新存储库中的硬链接对象与旧存储库中的对象进行操作(它将此作为本地文件系统上的优化)。 要查看是否是这种情况,您可以禁用硬链接:
git clone --depth 1 --no-hardlinks /path/to/repo.git
如果您只是尝试将当前状态的文件上传到服务器,则应使用git archive
生成树的ZIP或tar存档。
我建议这是因为当做一个本地克隆时,git会忽略--depth
因为它有利于硬链接。 您可以通过file:///home/user/path/to/repo
指定源repo来强制执行预期的行为(即使用file:///前缀)。
这是在文档中。
正如评论中所说的那样,这很奇怪,因为通常不可再现(见本帖 )。
应该工作的命令示例:
$ git clone --depth 1 git://github.com/rails/rails.git shallow
Initialized empty Git repository in /home/me/shallow/.git/
但无论如何,在大型回购中,浅层克隆所获得的收益似乎并不令人印象深刻
git clone --depth 1 repo_url
应该做你想做的事。
也许你在repo url
之后放了选项? 在某些系统上,它们会被忽略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.