美文网首页
idea 中使用JGit

idea 中使用JGit

作者: 晨予栀 | 来源:发表于2018-03-10 20:11 被阅读0次

问题来源:在做一个同步工具(用于同步本地磁盘与挂载映射磁盘的代码)时,需要展示本地代码的分支名。


解决方案

1.通过访问文件目录(.git/HEAD)中的字符串,并解析出来。

2.在代码中调用JGit的接口,获取当前git的分支名。

JGit是什么

JGit 提供了一个Git 命令的Java API,例如,你可以在 JGit 里面用

git.commit().setMessage( "My first commit" ).call();

代替 git commit -m "First commit"

JGit 命令都有一个 call() 方法,在命令被建立之后用来实际执行它。这些类的命名是在各自的 Git 命令后加上后缀命令。虽然有些命令提供一个公共构造函数,还是建议使用 Git 的工厂类来创建命令。

JGit的jar获取

1.在idea中,通过File->Project Structure>Project Setting进入maven搜索library

进入Maven

2.在Maven搜索中输入关键词jgit,可以得到如下结果
注意:理论上选哪个包都是ok的,但经过我测试,最好是org.eclipse.jgit:org.eclipse.jgit.ui.的jar包,不然生成jar包时会有不兼容问题。

查找JGit的jar包

通过JGit获取当前分支名

    public static String getGitBranch(String gitPath) {
        try {
            Repository existingRepo = new FileRepositoryBuilder().setGitDir(new File(gitPath + "\\.git")).build();
            return existingRepo.getBranch();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

总结

除了Repository.getBranch()之外,还有很多其他Git操作,创建一个存储库,从远程获取内容,向历史版本中添加和删除文件,检查历史操作,并最终将更改的文件推回到原始存储库都可以用JGit实现。大家可以参考官网的API或者JGit资源介绍

参考链接:https://www.jianshu.com/p/b241c7a5189f

相关文章

网友评论

      本文标题:idea 中使用JGit

      本文链接:https://www.haomeiwen.com/subject/jlmbfftx.html