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

最新文章

  1. python性能检测工具整理
  2. AccountName LoginName 变更
  3. GPS开发之知识储备(NMEA0183)
  4. Spark调优
  5. 权限框架 - shiro 授权demo
  6. Select Top在不同数据库中的使用
  7. A2DP协议笔记
  8. 1990-D. 幻方
  9. Yii2.0 UrlManager
  10. 【C++第二课】---C到C++的函数升级
  11. 工频相位无线同步模块PSYN5000系列在高压设备状态检测和局部放电故障定位的应用方案
  12. [转] How Bill Gates read books
  13. linux之特殊字符
  14. springboot+ibatis 多数据源配置
  15. gdb调试动态链接so
  16. 主机性能监控之wmi 获取进程信息
  17. Salesforce的报表和仪表板
  18. python爬虫-使用cookie登录
  19. Windows下sklearn源码安装
  20. JSP生成WORD文档,EXCEL文档及PDF文档的方法

热门文章

  1. PBRT笔记(4)——颜色和辐射度
  2. DWM1000 收发RXLED TXLED控制代码修改
  3. Cnr
  4. 根据浏览器判断是下载IOS还是其它的手机安装包
  5. HTML5冲刺
  6. poj3045 Cow Acrobats(二分最大化最小值)
  7. day 25 二十五、抽象类、多态、鸭子、反射、异常处理
  8. Eclipse中 maven 工程 pom 文件 出错
  9. 深度好文 | 在阿里做了5年技术Leader,我总结出了这些套路!
  10. corefx 源码追踪:找到引起 SqlDataReader.ReadAsync 执行延迟的那行代码