33

我想克隆 LibreOffice。官网是这样写的:

我们所有的源代码都托管在 git 中:

克隆:$ git clone git://anongit.freedesktop.org/libreoffice/core#(浏览)

克隆 (http): $ git clone http://anongit.freedesktop.org/git/libreoffice/core.git# 慢

压缩包:http://download.documentfoundation.org/libreoffice/src/

请找到最新版本(通常在底部附近)

现在,当我在 git bash 中编写此命令进行克隆时,它开始获取。但是存储库太大了,几个小时后我失去了几秒钟的连接,它回滚了下载,我什么也得不到。

即使发生中断,有什么方法可以顺利下载存储库吗?

PS 我是 Git 的新用户,我使用 1 MB 的 DSL 互联网连接。存储库必须超过 1 GB。

4

6 回答 6

21

可以通过此处的http协议(又名哑协议)访问存储库:http: //anongit.freedesktop.org/git/libreoffice/core.git

您可以使用wget或其他下载管理器在此处下载所有内容,并且您将拥有存储库的克隆。之后,将目录从 重命名core.git.git,并使用以下命令告诉 git 远程 url:

$ git remote add remote http://anongit.freedesktop.org/git/libreoffice/core.git
$ git reset --hard HEAD
于 2012-02-13T21:43:07.500 回答
17

执行 'git clone --depth 100' 它应该抓取最后 100 次提交

于 2012-02-13T21:42:09.020 回答
8

您可以执行以下操作:

git clone --depth 1 git@github.com:User/Project.git .
git fetch --unshallow

第一个clone仍然是原子的,所以如果你的连接不够可靠,无法获取当前的 HEAD,那么你就会遇到麻烦。

fetch如果连接中途断开,则后续应该是增量的并且可重试。

于 2018-07-11T09:38:31.157 回答
5

增加缓冲区大小,以便 git 可以正确利用您的带宽。使用以下命令。

git config --global core.compression 0

git config --global http.postBuffer 1048576000

git config --global http.maxRequestBuffer 100M

git clone <repo url>

等到克隆完成。

于 2020-05-19T12:37:08.827 回答
3

我所知道的最好的方法是将浅克隆--depth 1)功能与稀疏检出结合起来,即只检出您需要的子文件夹或文件。(浅克隆也意味着--single-branch,这也很有用。)请参阅udondan 的答案以获取示例。

此外,我使用 bash 循环不断重试,直到成功完成。像这样:

#!/bin/bash

git init <repo_dir>
cd <repo_dir>
git remote add origin <repo_url>

# Optional step: sparse checkout
git config core.sparsecheckout true                     # <-- enable sparse checkout
echo "subdirectory/*" >> .git/info/sparse-checkout      # <-- specify files you need

# Keep pulling until successful
until $( git pull --depth=1 origin master ); do         # <-- shallow clone
    echo "Pulling git repository failed; retrying..."
done

通过这种方式,即使在中国使用慢速 VPN,我最终也可以拉出大型 repos……</p>

重要的是,通过这种方式拉动,您仍然可以推动。

于 2019-02-01T05:55:56.787 回答
2

我使用具有 shell 访问权限的 Web 托管服务器首先克隆它,然后使用 rsync 在本地复制它。rsync 将在恢复时仅复制剩余的文件。

于 2014-12-31T06:17:45.077 回答