我正在克隆 Linux 内核存储库。存储库太大了,我的网络太慢了,我无法一次全部克隆。这可能会让我的电脑开机一整周。
如果我停止克隆操作中途,进度将丢失。如何部分克隆 git 存储库?
我正在克隆 Linux 内核存储库。存储库太大了,我的网络太慢了,我无法一次全部克隆。这可能会让我的电脑开机一整周。
如果我停止克隆操作中途,进度将丢失。如何部分克隆 git 存储库?
克隆无法恢复,如果中断,您需要重新开始。不过,可能有几种解决方法:
您可以使用浅克隆 ie git clone --depth=1
,然后您可以使用 加深这个存储库git fetch --depth=N
,增加 N。但免责声明是,我自己从未尝试过。
另一种选择可能是git-bundle。捆绑包本身是一个文件,您可以通过 HTTP 或 FTP 下载并支持恢复(通过 BitTorrent、rsync 或使用任何下载管理器)。您可以让某人为您创建一个捆绑包,然后下载它并从中创建一个克隆。更正从原始仓库获取的配置和下一步。
我不确定你的意思是分开,但git clone
要克隆整个回购,因为没有办法只克隆回购的一部分。
但是你可以只用一个提交和/或一个分支的深度来做一个浅克隆
git clone --depth=1 --single-branch --branch master
那只会抓住master
分支的最后一次提交。
git clone --depth 100
只会抓取最后 100 次提交。
一般来说,您实际想要的似乎不受支持:
各种说“这还不存在”。
但是一些大型 repos 也托管“哑”http 方式来检索 repo(不是git-layer 克隆)来解决这个问题。Linux内核可能。
克隆实际上是一系列较小的步骤。简而言之,它首先下载引用列表,然后检索每个引用的包文件或松散对象文件。目前没有办法自动恢复中断的克隆,因为克隆通常会发送一个大包文件,但是通过一些工作和研究,您应该能够手动请求较小的包,就像随着时间的推移进行一系列拉取一样。
查看git book 关于传输协议的章节和git fetch-pack 命令以获取更多信息。此外,git 的源代码在github上可用,因此您可以自己添加一个 resume 选项,或者至少使用它来了解如何在内部完成克隆。