集成GIT仓库
集成GIT仓库
jgit - java实现git操作
一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit 。 JGit 是一个用 Java 写成的功能相对健全的 Git 的实现,它在 Java 社区中被广泛使用, JGit 项目由 Eclipse 维护。
官网地址
仓库地址
https://gitee.com/mirrors/jgit
例子
https://github.com/centic9/jgit-cookbook
实例代码
代码示例:https://wiki.eclipse.org/JGit/User_Guide#git-add
依赖:
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
<version>6.1.0.202203080745-r</version>
<type>pom</type>
</dependency>
功能代码:
//官方代码
Repository repository = new FileRepositoryBuilder()
.setGitDir(new File("C:\\..\\.git"))
.readEnvironment()
.findGitDir() // scan up the file system tree
.build();
// 一般选择封装成方法
public static Repository getRepository(String dir) {
try {
Repository repository = new FileRepositoryBuilder()
.setGitDir(new File("C:\\..\\.git"))
.readEnvironment()
.findGitDir()
.build();
return repository;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
获取GIT对象
拿到git对象后就可以去执行git操作了
public static Git getGitObj(Repository repository) {
Git git = null;
git = new Git(repository);
return git;
}

这里面最常用的比如切换分支,新建分支,删除分支,revet,reset,commit,add。
官网操作代码:
Git git = new Git(db);
AddCommand add = git.add();
add.addFilepattern("需要add的文件名或者文件目录").call();
Git git = new Git(db);
CommitCommand commit = git.commit();
commit.setMessage("initial commit").call();
Git git = new Git(db);
RevCommit commit = git.commit().setMessage("initial commit").call();
RevTag tag = git.tag().setName("tag").call();
Git git = new Git(db);
Iterable<RevCommit> log = git.log().call();
1.new branch from …
需要先checkout base的分支然后create。
git.checkout().setName(baseBranch).call();
git.branchCreate().setName(新分支名).call();
//切换到新分支
git.checkout().setName(新分支名).call();
2.add&commit
git.add().addFilepattern(".").call();
git.rm().addFilepattern(".").call()
//setall()对应 -a 命令
git.commit().setMessage(commit msg).setAll(false).call();
// 一般的在add之前还会需要查看文件status,然后决定add哪些或者rm哪些
Status status = git.status().call();
Map<String,String> map = new HashMap<String,String>();
map.put("Added", status.getAdded().toString());
map.put("Changed", status.getChanged().toString());
map.put("Conflicting", status.getConflicting().toString());
map.put("ConflictingStageState", status.getConflictingStageState().toString());
map.put("IgnoredNotInIndex", status.getIgnoredNotInIndex().toString());
map.put("Missing", status.getMissing().toString());
map.put("Modified", status.getModified().toString());
map.put("Removed", status.getRemoved().toString());
map.put("UntrackedFiles", status.getUntracked().toString());
map.put("UntrackedFolders", status.getUntrackedFolders().toString());
System.out.println(map);
3.revert
使用git对象revert时需要拿到你当初commit的commitid或者其他操作的objectid。
git.revert().include(ObjectId.fromString(commitId)).setOurCommitName("OURS").call();
输入commitid然后操作。但是不可能谁能记住哪次commit的commitid,所以这里选择通过log去获取Revcommit对象。
List<String> commitIdList = new LinkedList<>();
gitObj.log().call().forEach(e -> finalPluginCommitLogList.add(e.getName()));
集成GIT仓库的更多相关文章
- 配置SSM公钥及创建远程仓库和在IEDA中集成git操作
3.将.ssh下的id_rsa.pub公钥copy到gitee工作台中 4.创建个人仓库 5.设置开源许可证:开源是否可以随意转载,开源但是不能商业使用,不能转载,- 限制! 6.克隆到本地! IDE ...
- OSChina中远程GIT仓库同步探索
GIT平台在OSChina中的搭建帮了我们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结我的成功经验,帮助大家,共同学习.由于条件有限,我全部的 ...
- sublime 集成git插件,及git常用命令
以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...
- IDEA集成git方法
一.IDEA集成git方法 首先idea集成git我们需要先下载一个小软件,git bash 地址:https://git-scm.com/downloads .下载好了之后直接下一步下一步傻瓜试 ...
- linux服务器中Jenkins集成git、Gradle持续构建Springboot项目
Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器中使用Jenkins自动发布一个可作为linux服务发布的Springboot项目. 自动 ...
- 如何将硕大笨重的git仓库拆分成灵活轻巧的模块小仓库
方法1.拆分一个子目录为独立仓库 参考链接:https://segmentfault.com/a/1190000002548731 以前是用 filter-branch 来实现,这个需求太常见了,有人 ...
- Git 仓库 SSH、HTTP、Gitweb (Nginx) 乱炖
简介: 自己搭建 Git 仓库,实现 SSH 协议.配合 Nginx 实现 HTTP 协议拉取.推送代码. 利用 Nginx 实现 Gitweb 在线浏览代码,使用 Gitweb-theme 更新默认 ...
- Eclipse集成Git做团队开发:代码管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- Eclipse集成Git做团队开发
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- 使用gitbase 分析git 仓库代码
gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况 而且可以基于源码的分析,还是很强大的 安装 直接使用编译的 ...
随机推荐
- LG8768 题解
题意 传送门 求长度为 \(n\) 的序列 \(a\) 的个数对 \(998244353\) 取模的结果,其中 \(a\) 满足: \(a_1=w\) \(a_{i-1}+L\le a_i\le a_ ...
- 403. 青蛙过河 (Hard)
问题描述 403. 青蛙过河 (Hard) 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有). 青蛙可以跳上石子,但是不可以跳入水中. 给你石 ...
- 基于线程的并行-Python 并行编程学习笔记(一)
前言 最近写一些模拟集群智能的算法,虽然机制简单,但是随着个体的增加,设计的计算量就比较大了,尤其是加上matplotlib进行动态展示,使得运算量骤增,看着画面也比较卡.之前想把算法转化成c++代码 ...
- AI步枪
最近正在看利用深度学习进行图像处理的资料,神经网络的确是太枯燥了,看不下去了就刷会手机.这几天推荐给我的新闻都是漂亮国又发生校园枪击事件了,不知道推荐算法是怎么认定我对这个话题感兴趣的.这算是老生常谈 ...
- go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案
大部分go执行cmd命令都是,我也是这样写的 package main import ( "fmt" "os/exec" ) func main() { cmd ...
- 通过parameters用python造数据
1.先通过命令安装allpairs库.allpairspy,命令为:pip install allpairs.pip install parameters,安装成功 2.通过python去写出来,如图 ...
- linux办公
办公环境.生产环境: centos.redhat.big cloud 1.改PS1:生产主机的主机名太长了,每次显示占半行 [root@10.0.0.11 ~]$ echo $PS1 [\u@10.0 ...
- Caused by: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
可能是多数据源使用分页pageHelper导致的: 解决方法:https://blog.csdn.net/qq_35378008/article/details/90024365 https://bl ...
- net Core做一个webApi的简单实例
用NetCore 和Dapper 和mySql做一个简单的实例, 一准备工作 1:VS2017+windos系统,也可以用其他的操作系统和工具 2:一台Cenetos的虚拟机或者虚拟机 二:开始 1: ...
- 虚拟机搭建linux环境&&使用winscp连接搭建好的linux环境步骤
一.需要的工具 虚拟机应用程序.一个镜像(ubuntu等).winscp可执行程序 二.安装虚拟机以及插入镜像 1)选择虚拟机 我安装的是VMware 就是这个,因为之前用的都是vitualbox现在 ...