我想克隆LibreOffice。从官方网站上可以看出:
我们所有的源代码都托管在git中:
克隆:
$ git clone git://anongit.freedesktop.org/libreoffice/core
#(浏览)克隆(http):
$ git clone http://anongit.freedesktop.org/git/libreoffice/core.git
#thlowTarballs:
http://download.documentfoundation.org/libreoffice/src/
请找到最新版本(通常在底部附近)
现在,当我在git bash中编写此命令进行克隆时,它会开始提取。但是存储库是如此之大,以至于几小时后我会失去连接几秒钟,它会回滚下载,但我什么都没得到。
即使发生中断,我是否可以顺利下载存储库?
P.S。我是Git的新用户,我使用1 MB DSL互联网连接。存储库必须超过1 GB。
答案 0 :(得分:20)
可以通过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
答案 1 :(得分:15)
做'git clone --depth 100' 它应该抓住最后100次提交
答案 2 :(得分:5)
您可以执行以下操作:
git clone --depth 1 git@github.com:User/Project.git .
git fetch --unshallow
第一个clone
仍然是原子的,因此,如果您的连接不够可靠,无法获取当前的HEAD,那么您将遇到麻烦。
如果连接中途断开,随后的fetch
应该是增量的并且可以重试。
答案 3 :(得分:1)
我使用具有shell访问权限的我的Web托管服务器首先克隆它,然后使用rsync在本地复制它。 rsync将在恢复时仅复制剩余的文件。
答案 4 :(得分:1)
增加缓冲区大小,以便git可以正确利用您的带宽。使用以下命令。
git config --global core.compression 0
git config --global http.postBuffer 1048576000
git config --global http.maxRequestBuffer 100M
git clone <repo url>
等待克隆完成。
答案 5 :(得分:0)
我所知道的最好的方法是将shallow clone(--depth 1
)功能与sparse checkout结合使用,即仅签出所需的子文件夹或文件。 (浅克隆也意味着--single-branch
,这也很有用。)有关示例,请参见udondan's answer。
此外,我使用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,我最终也可以提取大型存储库...
重要的是,通过这种方式拉动,您仍然可以推动。