2

我正在克隆 Linux 内核存储库。存储库太大了,我的网络太慢了,我无法一次全部克隆。这可能会让我的电脑开机一整周。

如果我停止克隆操作中途,进度将丢失。如何部分克隆 git 存储库?

4

4 回答 4

4

克隆无法恢复,如果中断,您需要重新开始。不过,可能有几种解决方法:

您可以使用浅克隆 ie git clone --depth=1,然后您可以使用 加深这个存储库git fetch --depth=N,增加 N。但免责声明是,我自己从未尝试过。

另一种选择可能是git-bundle。捆绑包本身是一个文件,您可以通过 HTTP 或 FTP 下载并支持恢复(通过 BitTorrent、rsync 或使用任何下载管理器)。您可以让某人为您创建一个捆绑包,然后下载它并从中创建一个克隆。更正从原始仓库获取的配置和下一步。

于 2013-05-24T13:51:05.207 回答
2

我不确定你的意思是分开,但git clone要克隆整个回购,因为没有办法只克隆回购的一部分。

但是你可以只用一个提交和/或一个分支的深度来做一个浅克隆

git clone --depth=1 --single-branch --branch master

那只会抓住master分支的最后一次提交。

于 2013-05-24T13:50:08.807 回答
0

git clone --depth 100只会抓取最后 100 次提交。

一般来说,您实际想要的似乎不受支持:

各种说“这还不存在”。

但是一些大型 repos 也托管“哑”http 方式来检索 repo(不是git-layer 克隆)来解决这个问题。Linux内核可能。

于 2013-05-24T13:47:25.587 回答
0

克隆实际上是一系列较小的步骤。简而言之,它首先下载引用列表,然后检索每个引用的包文件或松散对象文件。目前没有办法自动恢复中断的克隆,因为克隆通常会发送一个大包文件,但是通过一些工作和研究,您应该能够手动请求较小的包,就像随着时间的推移进行一系列拉取一样。

查看git book 关于传输协议的章节git fetch-pack 命令以获取更多信息。此外,git 的源代码在github上可用,因此您可以自己添加一个 resume 选项,或者至少使用它来了解如何在内部完成克隆。

于 2013-05-24T15:32:01.497 回答