【JGit】分支管理实践

这篇具有很好参考价值的文章主要介绍了【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());
            }
        }
}

推送结果展示

【JGit】分支管理实践,工具使用,总结,Git,JGit

删除远程分支

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 命令。文章来源地址https://www.toymoban.com/news/detail-833867.html

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

到了这里,关于【JGit】分支管理实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Git原理与使用】-- 分支管理

    目录 理解分支 创建分支 查看当前分支 创建本地分支 切换分支 合并分支 删除分支 合并冲突 分支管理策略 分支策略  bug 分支 不建议的合并方式 建议的合并方式 第一步 第二步 删除临时分支         分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C++ 的时候,

    2024年02月05日
    浏览(31)
  • Git原理与使用(二):分支管理

    分支管理是Git的杀手锏之一 威力无比强大 下面就让我们一起开始分支管理的探索之旅吧 注意: HEAD指向的是当前分支!!! 这就是master分支移动的大致草图 既然分支这么强大, 那么我们如何创建分支呢? 默认情况下,我们只有master这一个分支 然后我们又创建了一个分支:dev 此时我们

    2024年02月03日
    浏览(35)
  • git使用工具sourcetree创建分支合并主支

    平时项目开发中,需要从主支上拉取代码,创建自己的分支,将需要发布的部分代码提交到分支上,再合并到主支,记录一下操作 第一步:正常clone项目到sourcetree上,克隆部分就不写了 第二步:点击“分支”,创建属于自己的分支(可以用自己名字简称,比较有辨识度),

    2024年02月11日
    浏览(62)
  • Git分支管理:理解主干与分支的概念及使用方法

    Git 的主干是指代码库中的主要分支,通常称为 master 分支。在 master 分支上,您可以看到项目的最新版本,这是所有其他分支的基础。当您在 master 分支上进行更改时,这些更改将影响到所有其他分支。 分支是指从主干分支(或其他分支)分离出来的一个独立的代码版本。分

    2024年02月15日
    浏览(32)
  • git的分支的使用,创建分支,合并分支,删除分支,合并冲突,分支管理策略,bug分支,强制删除分支

    查看当前本地仓库中有哪些分支 HEAD所指向的分支就是当前正在工作的分支 创建一个分支 创建好了,但是目前还是指向 master 用tree命令也可以看到已经创建分支成功了 创建出来的分支,和主分支的最新记录是一样的 切换分支就是让HEAD指向我们的dev分支 我们在dev分支上堆R

    2024年02月04日
    浏览(56)
  • 从私有Git仓库的搭建到命令的使用及部署再到分支管理

    1. 版本控制系统: git   分布式  —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码) svn  集中管理的 —有中心代码库,其他都是客户端 2.git与svn介绍 1.git属于 分布式版本控制系统 2.svn属于 集中式的版本控制系统 面试题:Git和SVN的区别? 3.git 相关

    2024年01月21日
    浏览(43)
  • Git管理神器SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)

    俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTree,因为SourceTree同时支持

    2024年02月03日
    浏览(244)
  • git分支-分支管理

    现在已经创建、合并和删除了一些分支,让我们来看看一些分支管理工具,在开始经常使用分支时会很有用。 git branch命令不仅仅用于创建和删除分支。如果不带参数运行它,会得到当前分支的简单列表。 $ git branch   iss53 * master   Testing 这个*字符是前缀,表示当前检出的分

    2024年04月10日
    浏览(85)
  • 【Git】分支管理--创建新分支、删除分支、恢复分支

       1、查看所有分支 2、切换到将要复制的现有分支   sourceBranch 为接下来要复制到新分支的现有分支名。创建的新分支依赖当前所在分支,且新分支一旦创建不能更改依赖,所以要提前切换到希望复制的分支 3、创建新分支   newBranch 为新分支名 4、push内容到新分支  

    2024年02月07日
    浏览(47)
  • 5.git版本管理工具使用

    git是分布式版本管理工具 版本控制? 版本控制是一种记录文件或修改文件历史记录,让用户查看历史版本   集中版本控制 都有单一的集中管理服务器,保存所有文件的修订版本,开发者通过客户端连接这台服务器,取出最新文件或提交更新 缺点:中央服务器单点故障, 如

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包