github 大项目断点续传

背景

某天打开github想要clone一个比较大的项目,大概1.5个G 结果发现总是会在中途中断,然后从0开始,每次都手动去弄麻烦的要死。守在电脑前守了半个多小时,发现根本clone不下来! 离谱。

解决办法

1 总体流程

总体来说 比较好用的从github上gitclone大项目的流程是这样

  1. 新建目录, 命令行进入目录,执行 git init

  2. 命令行执行: git fetch [项目地址]

  3. 若断掉后,重复执行步骤2, 直到完成下载

  4. 命令行执行 git checkout FETCH_HEAD

  5. 命令行执行 git remote add origin [项目地址]

  6. 命令行执行 git pull origin master

  7. 命令行执行 git checkout master

  8. git pull

2 通过脚本

在执行第二步 git fetch 的时候 ,其实也是会频繁中断的,跟gitclone中断的频率差不多,但是貌似这一步会有缓存?? 我不清楚哦
通过这个脚本 可以不停的fetch 直到结束。

#!/bin/bash
set -x

num=1
while [ $num -le 2000 ]; do
   git fetch https://github.com/xxx.git
   if [ $? -ne 0 ]; then
       num=$(($num+1))
   else
       break
   fi
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 ]; do
   git fetch $PROJECT_URL
   if [ $? -ne 0 ]; then
       echo "Fetch failed, retrying ($num/$RETRY_LIMIT)..."
       num=$(($num+1))
   else
       echo "Fetch succeeded."
       break
   fi
done

# 如果fetch成功,继续执行后续步骤
if [ $num -le $RETRY_LIMIT ]; then
    # 切换到FETCH_HEAD
    git checkout FETCH_HEAD

    # 添加远程仓库
    git remote add origin $PROJECT_URL

    # 拉取指定分支
    git pull origin $BRANCH_NAME

    # 检查是否需要再次拉取
    git checkout $BRANCH_NAME
    git pull
else
    echo "Failed to fetch project after $RETRY_LIMIT attempts."
fi

openai生成的代码,,,比我写的好多了😓

使用方式

bash clone_project.sh https://github.com/username/project.git main

后面两个参数分别是项目地址 目标分支

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值