首页 > 其他分享 >集成GIT仓库

集成GIT仓库

时间:2022-12-22 15:35:43浏览次数:53  
标签:集成 status GIT map 仓库 Git call commit git

集成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;
}

60c39695dba7029347b7040704aa2b86

这里面最常用的比如切换分支,新建分支,删除分支,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()));

标签:集成,status,GIT,map,仓库,Git,call,commit,git
From: https://www.cnblogs.com/chase-h/p/16998821.html

相关文章

  • 用python写一个获取git log也就是changeLog的小工具
    一、前提:每次发版后,都是人工去整理gitlog进行发版说明,结合项目需要,决定写个小工具获取gitlog,主要实现的功能点有以下几点:1、获取gitcommit时的记录。2、在commit中......
  • Zeppelin-0.9.0安装并集成Hive、Spark、MySQL、Python
    1、下载安装包http://archive.apache.org/dist/zeppelin/zeppelin-0.9.0/2、上传zeppelin-0.9.0-bin-all.tgz至/opt/soft3、解压tar-zxvf/opt/soft/zeppelin-0.......
  • Git使用教程
    目录​​Git和SVN的区别​​​​Git的安装​​​​Git结构​​​​Git和代码托管中心​​​​本地库和远程库的交互​​​​Git的命令行操作​​​​本地库初始化​​​​Gi......
  • github pages官方资料限制空间最大1G
    githubpages官方资料限制空间最大1G 但是目前我的空间已经突破5G也没看到有任何限制的趋势。】目前编译一次就是比较慢,大概需要50分钟了。    ......
  • 君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏
    传世经典《菜根谭》中有言曰:“徜徉于山林泉石之间,而尘心渐息;夷犹于诗书图画之内,而俗气潜消。故君子虽不玩物丧志,亦常借物调心。”意思是,徜徉在林泉山石之间,能够摒弃杂念,留......
  • Git & Github & Gitee
    Git学习一、认识Git1、什么是Gitgit是一个分布式版本控制软件,最初由林纳斯·托瓦兹(LinusTorvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。2......
  • git 远程分支
    先本地创建一个分支(分支名:develop)gitcheckout-bdevelop将该分支推送到远程并创建(当然这里你也可以写好自己的代码后再执行该操作)gitpushorigindeve......
  • Gitlab CICD
    简介最近公司要求要通过GitlabCICD做一个项目的自动打包,我之前也没接触过,所以只能现学现卖。不过说实话,让我这个连大学英语四级都没过的人看Gitlab官网的纯英文教程,我真......
  • 博客永久搬家,新地址 lmmsoft.github.io
    搬家原因:审查风险大+国内的博客网站不够稳定新地址:https://lmmsoft.github.io/  RSS订阅: https://lmmsoft.github.io/feed.xml欢迎访问!......
  • git 基本操作命令笔记
    1.分支操作创建分支:gitbranch(branchname)切换分支命令:gitcheckout(branchname)获取远程所有分支:  gitfetch查看所有远程分支: gitbranch-r创建与远程......