备份自己Git账号下的所有项目及分支

逻辑

使用java代码请求git API 提供的接口获取到自己当前账号下的所有项目信息,根据返回信息拼接出备份所要的git命令生成脚本,然后在git 窗口执行脚本即可。

java代码

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class login {

    public static void main(String[] args) throws Exception{
        HttpClient httpClient= new DefaultHttpClient();
        for (int j = 0; j < 100; j++) {
            HttpGet httpPost = new HttpGet(("http://gitIP:git端口/api/v4/projects?per_page=100&page="+j+"&order_by=name"));
            httpPost.setHeader("Cookie", "网页上复制的Cookie");
            HttpResponse response2 = httpClient.execute(httpPost);
            String result2 = EntityUtils.toString(response2.getEntity(), "utf-8");
            JSONArray objects = JSONArray.parseArray(result2);
            for (int i = 0; i < objects.size(); i++) {
                JSONObject jsonObject = objects.getJSONObject(i);
               
                System.out.println("git clone "+jsonObject.get("ssh_url_to_repo").toString()+" "+jsonObject.get("path_with_namespace").toString()+" && cd "+jsonObject.get("path_with_namespace").toString());
                System.out.println("git branch -r | grep -v '\\->' | while read remote; do git branch --track \"${remote#origin/}\" \"$remote\";  done");
                System.out.println("git fetch --all");
                System.out.println("git pull --all");
                System.out.println("cd /e/file \n");
            }
            if(objects.size()<100){
                System.out.println(j+" "+objects.size()+"  结束");
                break;
            }
        }

    }
}

运行结果
在这里插入图片描述
将打印出来的文本全部复制到Git Bash Here 运行即可
在这里插入图片描述

java代码Cookie获取方式

在这里插入图片描述
用自己账号登录Git,F12 随便点个功能查看接口复制就可以

Git API

https://docs.gitlab.com/ee/api/projects.html#list-all-projects

脚本参考

https://blog.csdn.net/wwwsq/article/details/97106096#comments_24195607

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值