JGIT 克隆,下载,新建,合并等操作demo

package cn.bluetron.galileo.integrate;

import lombok.extern.slf4j.Slf4j;
import org.eclipse.jgit.api.*;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


/**
 * TestController 测试
 *
 * @author 
 * @date 2020/3/31
 */
@RestController
@Slf4j
public class TestController {

    @RequestMapping("test")
    public String sayHello() {
        //cloneBranch();
        //checkOutBranch();
        //createNewBranch();
        //delectBranch();
        mergeBranch();
        return "Hello Spring Boot";
    }

    void cloneBranch() {
        String remotePath = "***";
        //权限验证
        UsernamePasswordCredentialsProvider usernamePasswordCredentialsProvider = new
                UsernamePasswordCredentialsProvider("**", "**");
        try {
            List<String> branchs = new ArrayList<String>();
            branchs.add("refs/heads/test");
            branchs.add("refs/heads/dev_test_dev02");
            //====连接dev_test_dev01分支
            CloneCommand cloneCommand = Git.cloneRepository();
            Git git = cloneCommand.setURI(remotePath)//要从中克隆的uri
                    .setDirectory(new File("E:/repo"))//克隆到的目录
                    .setBranchesToClone(branchs)//.setBranch("refs/heads/test")
                    .setCredentialsProvider(usernamePasswordCredentialsProvider)
                    .setBranch("refs/heads/test")
                    .call();
            List<Ref> list = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支
            System.out.println(list);
            List<Ref> list1 = git.branchList().setListMode(ListBranchCommand.ListMode.REMOTE).call();//ALL -a 所有分支  REMOTE -r 远程分支
            System.out.println(list1);
            List<Ref> gitList = git.branchList().call();//本地分支
            for (Ref ref : gitList) {
                System.out.println("分支:" + ref + "" + ref.getName() + "" + ref.getObjectId().getName());
            }

            System.out.println();


        } catch (Exception e) {
            System.out.println(e);
        }
    }


    void checkOutBranch() {
        //-   refs/heads/test   refs/remotes/origin/dev_test_dev02   refs/remotes/origin/test
        try {
            Git git = Git.open(new File("E:/repo"));
            List<Ref> list = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支
            System.out.println(list);
            //切换远端分支
//            Ref ref= git.checkout().setCreateBranch(true)//创建新分支
//            .setName("dev_test_dev02")
//            .setStartPoint("origin/dev_test_dev02")//对应于起点选项
//            .call();
//            System.out.println(ref);
            //切换本地分支
            Ref ref = git.checkout().setCreateBranch(false).setName("test").call();
            System.out.println(ref);

        } catch (Exception e) {
            System.out.println(e);
        }

    }

    void createNewBranch() {

        try {
            Git git = Git.open(new File("E:/repo"));
            List<Ref> list = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支
            System.out.println(list);
            //切换本地分支dev_test_dev02
            Ref ref = git.checkout().setCreateBranch(false).setName("dev_test_dev02").call();
            System.out.println(ref);
            //切换本地分支test
            ref = git.checkout().setCreateBranch(false).setName("test").call();
            System.out.println(ref);
            //新建
//            ref = git.checkout().setCreateBranch(true).setName("dev_test_dev01").call();
//            System.out.println(ref);
            //01 本地分支以存在 切换本地分支
            ref = git.checkout().setCreateBranch(false).setName("dev_test_dev01").call();
            System.out.println(ref);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    void delectBranch() {
        //权限验证
        UsernamePasswordCredentialsProvider usernamePasswordCredentialsProvider = new
                UsernamePasswordCredentialsProvider("**", "***");
        try {
            Git git = Git.open(new File("E:/repo"));
            List<Ref> list = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支
            //删除远程分支
//            RefSpec refSpec1 = new RefSpec().setSource(null).setDestination(R_HEADS+"dev_test_dev02");
//            if (null == refSpec1) {
//                System.out.println("远程分支不存在"+"dev_test_dev02");
//            }
//            git.push().setCredentialsProvider(usernamePasswordCredentialsProvider).setRefSpecs(refSpec1).setRemote("origin").call();
//            System.out.println("删除分支成功");
//            System.out.println("--------------");

            //删除远程分支
//            RefSpec refSpec2 = new RefSpec().setSource(null).setDestination(R_HEADS+"dev_test_dev01");//设置目标
//            if (null == refSpec2) {
//                System.out.println("远程分支不存在"+"dev_test_dev01");
//            }
//            git.push().setCredentialsProvider(usernamePasswordCredentialsProvider).setRefSpecs(refSpec2).setRemote("origin").call();
//            System.out.println("删除分支成功");
//            System.out.println("--------------");
            //切换本地分支test
            Ref ref = git.checkout().setCreateBranch(false).setName("test").call();
            System.out.println(ref);
            //删除本地分支
            git.branchDelete().setBranchNames("refs/heads/dev_test_dev01").call();
            System.out.println("删除分支成功");
            System.out.println("--------------");

        } catch (Exception e) {

            System.out.println(e);
        }
    }

    void mergeBranch() {
        //权限验证
        UsernamePasswordCredentialsProvider usernamePasswordCredentialsProvider = new
                UsernamePasswordCredentialsProvider("**", "**");
        try {
            Git git = Git.open(new File("E:/repo"));
            List<Ref> list = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支

            //新建 03 分支(03==test)
//            Ref ref = git.checkout().setCreateBranch(true).setName("dev_test_dev03").call();
//            System.out.println(ref);
//
//            //切换到本地02
//            ref = git.checkout().setCreateBranch(false).setName("dev_test_dev02").call();
//            System.out.println(ref);
//
//            //新建 04 分支(04==02)
//            Ref ref4 = git.checkout().setCreateBranch(true).setName("dev_test_dev04").call();
//            System.out.println(ref4);
//
//            //切换到03
//            ref = git.checkout().setCreateBranch(false).setName("dev_test_dev03").call();
//            System.out.println(ref);
//
//            //03 合并 04
//            git.merge().include(ref4).call();

            //推送到远程
            Ref ref = git.checkout().setCreateBranch(false).setName("dev_test_dev04").call();
            System.out.println(ref);
            //git.pull().setCredentialsProvider(usernamePasswordCredentialsProvider).call();

            git.push().add(ref).setCredentialsProvider(usernamePasswordCredentialsProvider).call();

            List<Ref> list2 = git.branchList().setListMode(ListBranchCommand.ListMode.ALL).call();//ALL -a 所有分支  REMOTE -r 远程分支
            System.out.println("---------------------------");
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public String initSynchronizedObject(String param1, String param2) {
        return param1 + param2;
    }

   
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值