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();
}
}
JGit 切换分支的更多相关文章
- Git切换分支出现提示'SSL端口:44301'及解决方案
切换分支出现如下提示,并且自动签出了项目文件csproj. 修改项目文件csproj 修改前: <UseIISExpress>true</UseIISExpress> < ...
- git 新建分支/切换分支/合并分支 使用方法
我的源码在 阿里云的git上存储着呢 1. 在 code.aliyun.com 上 新建分支 fixbug 2. 通过在 phpstorm中 右键项目>>VSC>>Git&g ...
- Git客户端SourceTree回滚到远程仓库和切换分支
使用SourceTree将远程仓库回滚到某一次提交 原理:在本地需要回滚的commit上创建一个分支,将该分支合并到远程仓库. 步骤 1.在需要回滚的commit上右键创建分支 创建分支 2.输入新的 ...
- Git使用八:创建和切换分支
git的分支 与svn对比 克隆一份全新的目录以同样拥有 5 个分支来说,SVN 是同时复制 5 个版本的文件,也就是说重复 5 次同样的动作.而 Git 只是获取文件的每个版本的元素,然后只载入主要 ...
- gitLib操作笔录《一》:创建分支,切换分支,提交分支到远程,以及基本代码clone与更新提交到远程操作指令
git 操作经验注:master表示的是主线,origin 表示远程源 创建分支:git checkout -b < branch_name >或 < master >切换分支 ...
- git命令-切换分支
git一般有很多分支,我们clone到本地的时候一般都是master分支,那么如何切换到其他分支呢? 1. 查看远程分支 $ git branch -a 我在mxnet根目录下运行以上命令: ~/mx ...
- Android Studio之SVN打分支、切换分支及合并分支
1.打分支: 右击项目--Subversion--Branch or Tag 点击OK,分支就创建成功了,接下来我们切换到分支v2 2.切换分支: 右击项目--Subversion--Update D ...
- git常用命令速查:创建,修改提交,撤销,切换分支,合并分支,变基解决冲突
创建 $ git init #在当前目录下创建一个空的本地仓库 $ rm -rf .git #删除本地仓库 $ git add . #把当前目录下的所有文件添加到暂存区 $ git commi ...
- SVN创建分支/合并分支/切换分支
在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录.这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方. branch ...
随机推荐
- 【Redis】-- 安装及配置
我们redis的安装较为复杂,属于Linux上的源码编译安装,即不能直接通过yum安装. 1.安装Redis 具体步骤: 1.进入redis官网,复制下载链接,通过wget下载源码 官网:https: ...
- 阿里云服务器端配置TensorFlow & jupyter
在阿里云上搭建爬取某信的公众号文章的程序时,发现需要验证码验证,技穷之后考虑做一个验证码识别程序,所以开始在服务器上搭建机器学习平台,背景,服务器上已经有其他应用在跑着了,所以不想停服,初始环境:ce ...
- 一道简单的dp题 --- Greenhouse Effect CodeForces - 269B
题目链接: https://vjudge.net/problem/36696/origin 题目大意: 要求从1到m升序排列,点可以随意移动,问最少需要移动多少次, 思路: 动态规划 可以推出转移方程 ...
- ruby配合gem使用sass
Ruby环境安装 1.Ruby安装包下载地址:http://rubyinstaller.org/downloads/下载对应系统版本的安装包: 2.双击rubyinstaller-2.2.3-x64. ...
- __x__(37)0909第五天__背景图按钮
link,hover,active三种按键状态,存放三张图片 缺点: 资源只有在被使用时,才会被加载. 页面第一次加载时,会出现短暂的延迟闪烁,造成一次不佳的用户体验. 图片整合技术 CSS-Spri ...
- Linux:ftp服务本地用户,虚拟用户配置
本地用户 1. 修改ftp配置文件, anonymous_enable=NO 默认为YES,修改为NO,禁止匿名访问, 监听端口,可以根据自己的需求修改,为了安全起见自定义为好 2. /etc/ ...
- C语言面试题分类->位运算
1.不用临时变量交换两个整数. a = a ^ b; b = a ^ b; a = a ^ b; 2.实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如9的二进制是1001,则输出2. i ...
- 用JS编写个人所得税计算器
编写 “个人所得税计算器”函数 计算个税的方法: 3500 以下免征 3500 ~ 5000 部分 缴纳 3% 5000 ~ 9000 部分 缴纳 10% 9000 以上部分 缴纳 20% 代码如下: ...
- ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库
SQLite 内存数据库(in-memory database)的连接字符串是 Data Source=:memory: ,它的特点是数据库连接一关闭,数据库就会被删除.而使用 services. ...
- 出现errSecInternalComponent
出现errSecInternalComponent Xcode签名机制(code signing mechanism) 的 bug, Xcode 中账号多了,就会产生很多过期的描述文件,Xcode 没 ...