【JGit】分支管理实践

本文紧接【JGit】简述及学习资料整理。

以下梳理了使用 JGit 进行 Git 操作的实践

JGit实践

主函数

public static void main(String[] args) throws Exception {
        String localDir = "D:\\tmp\\git-test\\";

        String gitUrl = "http://192.168.181.1:3000/root/git-test-by-code.git";

        String username = "root";
        String password = "123456";
        // 创建认证信息
        CredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(username, password);

        // 初始化 git 仓库
        Git git = Git.init().setDirectory(new File(localDir)).call();


        // Pull Test
        // pullTest(gitUrl, credentialsProvider, git);

        // ==== 分支管理
        // branchManage(git);

        // ==== 创建分支,并将其推送到远程仓库
		newBranchAndPush(credentialsProvider, git);
		// ==== 删除远程分支
		//deleteRemoteBranch(credentialsProvider, git);

        // 关闭 git 命令
        git.close();
    }

拉取代码

private static void pullTest(String gitUrl, CredentialsProvider credentialsProvider, Git git)
            throws GitAPIException, URISyntaxException, WrongRepositoryStateException, InvalidConfigurationException,
            InvalidRemoteException, CanceledException, RefNotFoundException, RefNotAdvertisedException, NoHeadException,
            TransportException {
        // 添加远程仓库信息
        git.remoteAdd()
                .setName("origin")
                .setUri(new URIish(gitUrl))
                .call();

        // 代码拉取
        PullResult pullResult = git.pull()
                .setCredentialsProvider(credentialsProvider)
                .call();

        log.info(">>> " + pullResult);
        if (pullResult.isSuccessful()) {
            log.info(">>> pull Result is Success");
        } else {
            log.error(">>> pull Result is Failes ");
        }
    }

分支管理

private static void branchManage(Git git) throws Exception {
        // 列出所有分支
        branchList(git);

        // 添加分支 dev
        System.err.println("<<< 添加分支");
        git.branchCreate().setName("dev").call();
        branchList(git);

        // 修改分支名
        System.err.println("<<< 修改分支");
        git.branchRename().setOldName("dev").setNewName("dev-new").call();
        branchList(git);

        // 删除分支
        System.err.println("<<< 删除分支");
        git.branchDelete().setBranchNames("dev-new").call();
        branchList(git);
    }

private static void branchList(Git git) throws Exception {
    // 获取默认分支
        String currentBranch = git.getRepository().getBranch();
        List<Ref> call = git.branchList().call();
        for (Ref ref : call) {
            boolean symbolic = ref.isSymbolic();
            boolean peeled = ref.isPeeled();
            String name = ref.getName();
            if(currentBranch.equals(name.substring(name.lastIndexOf('/') + 1))){
                name = "* \t"+ name;
            }else{
                name = "\t" + name;
            }
            System.out.println(">>> \t"+ name + "  " + ref.getObjectId().getName() + "  ,symbolic:" + symbolic + ", peeled: " + peeled);
        }
    }

创建新分支并推送到远程服务器

 private static void newBranchAndPush(CredentialsProvider credentialsProvider, Git git) throws Exception{
     // 创建 dev 分支
        Ref branchRef = git.branchCreate().setName("dev").call();

        // 推送分支到远程仓库
        Iterable<PushResult> results = git.push()
                .setCredentialsProvider(credentialsProvider)
                .setRemote("origin")
                .add(branchRef)
                .call();

        // 处理推送结果
        for (PushResult result : results) {
            for (RemoteRefUpdate update : result.getRemoteUpdates()) {
                System.out.println("Status: " + update.getStatus());
            }
        }
}

推送结果展示

在这里插入图片描述

删除远程分支

private static void deleteRemoteBranch(CredentialsProvider credentialsProvider, Git git) throws GitAPIException {
        String deleteBranch = "dev";
        RefSpec refSpec = new RefSpec()
                .setSource(null)
                .setDestination("refs/heads/" + deleteBranch);
         
        Iterable<PushResult> results = git.push()
                .setCredentialsProvider(credentialsProvider)
                .setRemote("origin")
                .setRefSpecs(refSpec)
                .call();

        // 处理推送结果
        for (PushResult result : results) {
            for (RemoteRefUpdate update : result.getRemoteUpdates()) {
                System.out.println("Status: " + update.getStatus());
            }
        }
    }

以上代码相当关于执行了 git push origin --delete dev 命令。

  • [【JGit】简述及学习资料整理]([JGit ]简述及学习资料整理-CSDN博客)
  • 【Gitea】Java 使用 JGit 创建 Git 代码仓库
  • Win 下 Docker 安装 Gitea 实践:windows docker desktop部署gitea

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PFA容量瓶在半导体晶圆化学机械抛光中的用处是什么?

PFA容量瓶又称可溶性聚四氟乙烯容量瓶、特氟龙容量瓶容量瓶&#xff0c;有螺纹和插口两种可供选择&#xff0c;常用有10ml、25ml、50ml、100ml、250ml、500ml、1000ml规格 Teflon系列PFA容量瓶是一个透明的长颈瓶&#xff0c;瓶体为梨形&#xff0c;便于摇荡液体和刷洗。每一个…

Linux进程(一)信号-----信号产生

前言 在 Linux 中&#xff0c;进程具有独立性&#xff0c;进程在运行后可能 “放飞自我”&#xff0c;这是不利于管理的&#xff0c;于是需要一种约定俗成的方式来控制进程的运行&#xff0c;这就是 进程信号&#xff0c;本文将会从什么是进程信号开篇&#xff0c;讲述各种进程…

harmony 鸿蒙系统学习 安装ohpm报错 ohpm install failed

一. 安装配置 DevEco Studio 安装包时报错 execute ohpm install failed. Install task failed: ArkTS 3.2.12.5. Install ArkTS dependencies failed. 解决办法 找原因&#xff0c;首先&#xff0c;我的电脑中之前安装过node&#xff0c;也许是因为这个。&#xff08;其实…

Redis之缓存雪崩问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 锁2. 不同的过期时间3. 缓存预热和定时任务 一、书接上文 Redis之缓存穿透问题解决方案实践SpringBoot3Docker 二、介绍 缓存雪崩&#xff0c;指大量的缓存失效&#xff0c;大量的请求又同时落在数据库。主要的一种诱因是key设…

先进电机技术——步进电机与伺服电机

一、步进电机 步进电机是一种特殊类型的电动机&#xff0c;它的工作方式是将输入的电脉冲信号转换成精确的机械运动——通常是转子的角位移或直线移动。每接收到一个电脉冲信号&#xff0c;步进电机内部的定子绕组按顺序通电&#xff0c;产生磁场变化&#xff0c;使得与之相互…

企业级人脸美颜和美妆解决方案

视觉营销日益重要&#xff0c;而人脸美颜和美妆作为视觉营销的关键环节&#xff0c;更是受到了众多企业的关注。美摄科技&#xff0c;作为国内领先的人脸美颜和美妆解决方案提供商&#xff0c;以其先进的技术和卓越的产品&#xff0c;助力企业打造完美视觉体验&#xff0c;提升…

STM32引脚重定义问题

最近在搞资源管理&#xff0c;发现有些引脚不能用 比如这个PE引脚。我想用他输出PWM&#xff0c;但是不能用&#xff0c;我也重定义了&#xff0c;还是不能用。回去翻看了技术手册。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射引脚功能&#xff0c;需…

Flutter自定义tabbar任意样式

场景描述 最近在使用遇到几组需要自定义的tabbar或者类似组件&#xff0c;在百度查询资料中通常&#xff0c;需要自定义 TabIndicator extends Decoration 比如上图中的带圆角的指示器这样实现 就很麻烦&#xff0c; 搜出来的相关也是在此之处上自己画&#xff0c;主要再遇…

2.20号qt

1.Qt中的信息调试类 &#xff08;输出类&#xff09; QDebug //1.类似与printf qDebug("%s","hello kittiy"); //2. 类似与cout 默认有换行 比较常用的方式 qDebug() << "你好" ; //1.类似与printf qDebug("%s",&q…

dubbo源码中设计模式——注册中心中工厂模式的应用

工厂模式的介绍 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂模式属于创建型模式&#xff0c;它在创建对象时提供了一种封装机制&#xff0c;将实际创建对象的代码与使用代码分离。 应用场景&#xff1a;定义一个创建对象的接口&#xff0…

Kotlin基本语法 4 类

1.定义类 package classStudyclass Player {var name:String "jack"get() field.capitalize()set(value) {field value.trim()} }fun main() {val player Player()println(player.name)player.name " asdas "println(player.name)} 2.计算属性与防范…

【Python】 剪辑法欠采样 CNN压缩近邻法欠采样

借鉴&#xff1a;关于K近邻&#xff08;KNN&#xff09;&#xff0c;看这一篇就够了&#xff01;算法原理&#xff0c;kd树&#xff0c;球树&#xff0c;KNN解决样本不平衡&#xff0c;剪辑法&#xff0c;压缩近邻法 - 知乎 但是不要看他里面的代码&#xff0c;因为作者把代码…

QEMU源码全解析 —— virtio(20)

接前一篇文章&#xff1a; 上回书重点解析了virtio_pci_modern_probe函数。再来回顾一下其中相关的数据结构&#xff1a; struct virtio_pci_device struct virtio_pci_device的定义在Linux内核源码/drivers/virtio/virtio_pci_common.h中&#xff0c;如下&#xff1a; /* O…

话说激励广告

一、导言 如果一个入场口令是请问效率秘诀是&#xff1a; _ _ _&#xff0c;_ _ _ _。&#xff0c;然后她会告诉你通过小程序&#xff1a; 点“试彩蛋”&#xff0c;看完视频广告之后可以得到答案&#xff0c;这种形式是不是有点意思。这就是激励广告的一种应用场景。 激励…

[ai笔记8] 聊聊openAI最新文生视频产品-Sora

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第8篇分享&#xff01; 近期sora在科技届引发不小的轰动&#xff0c;虽然这是openai并未对外发布的相关产品&#xff0c;目前如同小米汽车的技术发布会&#xff0c;但是确实引发了不小的震撼&#xff0c…

Trie树应用(最大异或对)C++(Acwing)

代码&#xff1a; #include <iostream> #include <algorithm>using namespace std;const int N 100010, M 3100010;int n; int a[N], son[M][2], idx;void insert(int x) {int p 0;for (int i 30; i > 0; i -- ){int &s son[p][x >> i & 1]…

Java+SpringBoot:滑雪场管理的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【视频编解码】M-JPEG压缩、H.264压缩 对比

简介 参考这篇文章&#xff1a;https://blog.csdn.net/qq_41248872/article/details/83590337 写的比较好&#xff0c;这里就不赘述了。 我们在视频传输的时候&#xff0c;需要压缩&#xff0c;常见的压缩包括: jpeg 压缩h264 压缩 当然使用最多的还是 264, 毕竟他的压缩比…

我国无水氢氟酸产量逐渐增长 东岳集团市场占比较大

我国无水氢氟酸产量逐渐增长 东岳集团市场占比较大 无水氢氟酸是一种十分重要的化工产品&#xff0c;在常温常压下多表现为一种无色发烟液体。无水氢氟酸具有吸水性强、化学活性高、介电常数高、阻燃性能好等优点。经过多年发展&#xff0c;无水氢氟酸制备方法已经成熟&#xf…

【C++】 类与对象——流操作符重载,const成员函数

类与对象 流操作符重载1 << 重载2 >> 重载 const 修饰Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&#xff01;&#xff01;&#xff01; 流操作符重载 流操作符功能<<输出操作符>>输…