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();
            }
        }
    

     

  • 相关阅读:
    通过rabbitmqadmin管理rabbitmq
    OpenCASCADE Incremental Mesh
    RvmTranslator6.6
    PipeCAD之管道标准库PipeStd(2)
    PipeCAD之管道标准库PipeStd
    OpenCASCADE Face Normals
    OpenCASCADE Make Face With Holes
    RvmTranslator6.5 is released
    qmake生成Visual Studio工程
    Levmar:Levenberg-Marquardt非线性最小二乘算法
  • 原文地址:https://www.cnblogs.com/wgslucky/p/10334580.html
Copyright © 2011-2022 走看看