美文网首页
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