背景
某天打开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/bashset-xnum=1while[$num-le2000];dogit fetch https://github.com/xxx.git
if[$?-ne0];thennum=$(($num+1))elsebreakfidone
最终解决方案
如果有兴趣 可以使用这个脚本
#!/bin/bashset-x# 从命令行获取项目URL和分支名称PROJECT_URL=$1BRANCH_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=1while[$num-le$RETRY_LIMIT];dogit fetch $PROJECT_URLif[$?-ne0];thenecho"Fetch failed, retrying ($num/$RETRY_LIMIT)..."num=$(($num+1))elseecho"Fetch succeeded."breakfidone# 如果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
后面两个参数分别是项目地址 目标分支
版权归原作者 v俊逸 所有, 如有侵权,请联系我们删除。