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