如何克隆git repo零碎

时间:2013-05-24 13:39:07

标签: git

我正在克隆Linux内核库。存储库是如此巨大,我的网络是如此之慢,以至于我无法一次克隆它。这可能会使我的电脑保持整整一周。

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

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

我不确定你的意思是单独的,但git clone将克隆整个回购,因为没有办法克隆回购的某些部分。

但是你可以只用一次提交和/或只有一个分支

进行浅层克隆
git clone --depth=1 --single-branch --branch master

这将抓住master分支的最后一次提交。

答案 2 :(得分:0)

git clone --depth 100只能获取最后100次提交。

一般来说,看起来你实际想要的东西是不受支持的:

所有人都说“这还不存在。”

但是一些大型回购也会主持“哑”的http方式来检索回购(不是 git-layer clone)来解决这个问题。 Linux内核可能。

答案 3 :(得分:0)

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

查看at the git book chapter on transfer protocolsthe git fetch-pack command以获取更多信息。另外,git的源代码可以在github上找到,因此您可以自己添加一个简历选项,或者至少使用它来了解克隆是如何在内部完成的。