集成GIT仓库

jgit - java实现git操作

一个 Java 程序中使用 Git ,有一个功能齐全的 Git 库,那就是 JGit 。 JGit 是一个用 Java 写成的功能相对健全的 Git 的实现,它在 Java 社区中被广泛使用, JGit 项目由 Eclipse 维护。

官网地址

http://www.eclipse.org/jgit/

仓库地址

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仓库的更多相关文章

  1. 配置SSM公钥及创建远程仓库和在IEDA中集成git操作

    3.将.ssh下的id_rsa.pub公钥copy到gitee工作台中 4.创建个人仓库 5.设置开源许可证:开源是否可以随意转载,开源但是不能商业使用,不能转载,- 限制! 6.克隆到本地! IDE ...

  2. OSChina中远程GIT仓库同步探索

    GIT平台在OSChina中的搭建帮了我们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结我的成功经验,帮助大家,共同学习.由于条件有限,我全部的 ...

  3. sublime 集成git插件,及git常用命令

    以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...

  4. IDEA集成git方法

    一.IDEA集成git方法 首先idea集成git我们需要先下载一个小软件,git bash  地址:https://git-scm.com/downloads  .下载好了之后直接下一步下一步傻瓜试 ...

  5. linux服务器中Jenkins集成git、Gradle持续构建Springboot项目

    Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器中使用Jenkins自动发布一个可作为linux服务发布的Springboot项目. 自动 ...

  6. 如何将硕大笨重的git仓库拆分成灵活轻巧的模块小仓库

    方法1.拆分一个子目录为独立仓库 参考链接:https://segmentfault.com/a/1190000002548731 以前是用 filter-branch 来实现,这个需求太常见了,有人 ...

  7. Git 仓库 SSH、HTTP、Gitweb (Nginx) 乱炖

    简介: 自己搭建 Git 仓库,实现 SSH 协议.配合 Nginx 实现 HTTP 协议拉取.推送代码. 利用 Nginx 实现 Gitweb 在线浏览代码,使用 Gitweb-theme 更新默认 ...

  8. Eclipse集成Git做团队开发:代码管理

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  9. Eclipse集成Git做团队开发

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  10. 使用gitbase 分析git 仓库代码

      gitbase 是一个基于golang 开发的开源git 仓库sql 接口查询引擎,基于此工具,我们可以方便的分析git 仓库代码的情况 而且可以基于源码的分析,还是很强大的 安装 直接使用编译的 ...

随机推荐

  1. SQLServer 编程总结

    case的用途 case语句有四个关键字,缺一不可,分别是:case when then end,另外还有一个else.case 后面跟字段名(当在when后面出现字段名时,case里不能写出来),w ...

  2. MySQL8.0 存储引擎(InnoDB )buffer pool的实现原理

      数据库为了高效读取和存储物理数据,通常都会采用缓存的方式来弥补磁盘IO与CPU运算速度差.InnoDB 作为一个具有高可靠性和高性能的通用存储引擎也不例外,Buffer Pool就是其用来在内存中 ...

  3. selenium用executeAsyncScript执行异步脚本调用callback使用方法

    executeAsyncScript的作用: 就是把异步的js过程变成java同步的形式,方便java程序及时的接收到同步数据 1.cmdriver.manage().timeouts().scrip ...

  4. VMware-SSH协议的认证方式

    SSH1协议支持非对称密钥认证方式.口令认证,无法保证连接的完整性. SSH2协议支持SSH1协议支持的所有认证方式,增加数据保密性. 基于主机的认证方式[!不安全!] 当本地计算机收到执行远程命令的 ...

  5. 不需要鼠标交互的UI去掉RaycastTarget

    UI事件会在EventSystem在Update的Process触发.UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件 ...

  6. Mac技术服务, 感谢 点赞打赏

    ​ 首先,非常感谢大家对我的支持和鼓励. 如果需要单独解决Mac问题,您也可以选择付费服务,感谢大家的理解与支持! * 普通问题/软件安装:10元--100元每个(根据具体问题由您而定): * 普通问 ...

  7. 新手入门Neo4j,手把手完整教学

    1. 图数据库Neo4j简介 1.1 什么是图数据库 图数据库:是基于图论实现的一种NoSQL数据库,其数据结构是和查询方式是以图论为基础的,图数据库主要用于存储更多的连接数据. 图论:用多个节点代表 ...

  8. 初识swoole

    环境: 腾讯云服务器  centos7 在安装完swoole服务之后 使用 php -m  查看是否有该组件 确认存在后 在根目录下 创建一个文件夹 当做专门测试swoole使用 如 8 在该文件夹下 ...

  9. 我的vim配置相关

    谨以此文记录下之前的折腾.(后续可能还会折腾什么) 目标 我的目的很简单,就是希望能有一个启动快速的文本编辑器,可以简单的代码着色,vim键位,简单的文本修改,打开大点的文件不发愁,可以简单的form ...

  10. allure-动态参数,报告优化方法。

    1.allure.title方法 #前置需要在源文件:\venv\Lib\site-packages\allure_pytest\listener.py#在该文件修改为这样:test_result.p ...