Лучший из известных мне методов - это объединить функцию неглубокий клон (--depth 1
) с разреженной проверкой , которая проверяет только те подпапки или файлы, которые вам нужны. (Мелкое клонирование также подразумевает --single-branch
, что также полезно.) См. ответ Удондана для примера.
Кроме того, я использую цикл 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 в Китае ...
Важно отметить, что, потянув таким образом, вы все равно сможете толкать.