本文主要是介绍github 大项目断点续传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
某天打开github想要clone一个比较大的项目,大概1.5个G 结果发现总是会在中途中断,然后从0开始,每次都手动去弄麻烦的要死。守在电脑前守了半个多小时,发现根本clone不下来! 离谱。
解决办法
1 总体流程
总体来说 比较好用的从github上gitclone大项目的流程是这样
新建目录, 命令行进入目录,执行 git init
命令行执行: git fetch [项目地址]
若断掉后,重复执行步骤2, 直到完成下载
命令行执行 git checkout FETCH_HEAD
命令行执行 git remote add origin [项目地址]
命令行执行 git pull origin master
命令行执行 git checkout master
git pull
2 通过脚本
在执行第二步 git fetch 的时候 ,其实也是会频繁中断的,跟gitclone中断的频率差不多,但是貌似这一步会有缓存?? 我不清楚哦
通过这个脚本 可以不停的fetch 直到结束。
#!/bin/bash
set -xnum=1
while [ $num -le 2000 ]; dogit fetch https://github.com/xxx.gitif [ $? -ne 0 ]; thennum=$(($num+1))elsebreakfi
done
最终解决方案
如果有兴趣 可以使用这个脚本
#!/bin/bash
set -x# 从命令行获取项目URL和分支名称
PROJECT_URL=$1
BRANCH_NAME=${2:-master}# 从URL中提取项目名称
PROJECT_NAME=$(basename -s .git $PROJECT_URL)# 新建目录并进入
mkdir $PROJECT_NAME && cd $PROJECT_NAME# 初始化Git仓库
git init# 设置重试次数
RETRY_LIMIT=2000# 开始fetch操作
num=1
while [ $num -le $RETRY_LIMIT ]; dogit fetch $PROJECT_URLif [ $? -ne 0 ]; thenecho "Fetch failed, retrying ($num/$RETRY_LIMIT)..."num=$(($num+1))elseecho "Fetch succeeded."breakfi
done# 如果fetch成功,继续执行后续步骤
if [ $num -le $RETRY_LIMIT ]; then# 切换到FETCH_HEADgit checkout FETCH_HEAD# 添加远程仓库git remote add origin $PROJECT_URL# 拉取指定分支git pull origin $BRANCH_NAME# 检查是否需要再次拉取git checkout $BRANCH_NAMEgit pull
elseecho "Failed to fetch project after $RETRY_LIMIT attempts."
fi
openai生成的代码,,,比我写的好多了😓
使用方式
bash clone_project.sh https://github.com/username/project.git main
后面两个参数分别是项目地址 目标分支
这篇关于github 大项目断点续传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!