zoukankan      html  css  js  c++  java
  • JGit 切换分支

    JGit切换分支的时候,有两种情况,一种是在本地已修建过这个分支,一种是本地没有这个分支,需要从远程拉取。如下面代码所示:

     /**
         * 
         * <p>
         * Description:判断本地分支名是否存在
         * </p>
         * 
         * @param git
         * @param branchName
         * @return
         * @throws GitAPIException
         * @author wgs
         * @date 2019年7月20日 下午2:49:46
         *
         */
        public boolean branchNameExist(Git git, String branchName) throws GitAPIException {
            List<Ref> refs = git.branchList().call();
            for (Ref ref : refs) {
                if (ref.getName().contains(branchName)) {
                    return true;
                }
            }
            return false;
        }
        /**
         * 
         * <p>Description:切换分支,并拉取到最新 </p>
         * @param repoDir
         * @param branchName
         * @author wgs 
         * @date  2019年7月20日 下午4:11:45
         *
         */
        public void checkoutAndPull(String repoDir, String branchName) {
            try {
                Repository existingRepo = new FileRepositoryBuilder().setGitDir(new File(repoDir)).build();
                Git git = new Git(existingRepo);
                try {
                    if (this.branchNameExist(git, branchName)) {//如果分支在本地已存在,直接checkout即可。
                        git.checkout().setCreateBranch(false).setName(branchName).call();
                    } else {//如果分支在本地不存在,需要创建这个分支,并追踪到远程分支上面。
                        git.checkout().setCreateBranch(true).setName(branchName).setStartPoint("origin/" + branchName).call();
                    }
                    git.pull().call();//拉取最新的提交
                } finally {
                    git.close();
                }
            } catch (IOException | GitAPIException e) {
                e.printStackTrace();
            }
        }
    

     

  • 相关阅读:
    124. 二叉树中的最大路径和
    快速排序,归并排序
    剑指offer ——重建二叉树
    共享指针的简单实现
    string_自定义
    幸运的袋子
    动态规划——出差问题
    计算数组平均值
    时间格式化并算差值
    适配器模式
  • 原文地址:https://www.cnblogs.com/wgslucky/p/10334580.html
Copyright © 2011-2022 走看看