博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jgit使用说明
阅读量:6946 次
发布时间:2019-06-27

本文共 3355 字,大约阅读时间需要 11 分钟。

jgit是一个java代码提交git的插件,可以通过代码连接git远程仓库,在本地建立版本库,进行拉取、提交、推送等操作。

首先贴出maven依赖

org.eclipse.jgit
org.eclipse.jgit
3.7.0.201502260915-r

当然还可以使用其他版本的依赖,大致操作都一样。

然后就是代码中的操作了

首先声明一些常量,然后在本地建立版本库

//定义本地git路径    public static final String LOCALPATH = "D:/git_home/demo/";    //.git文件路径    public static final String LOCALGITFILE = LOCALPATH + ".git";    //远程仓库地址    public static final String REMOTEREPOURI = "http://172.16.124.101/yangyi/RegexFile.git";//操作git的用户名    public static final String USER = "8844@163.com";    //密码    public static final String PASSWORD = "123456";    //git远程仓库服务器ip    public static final String HOST = "172.16.124.101";    //建立与远程仓库的联系,仅需要执行一次    public static String setupRepo() {        String msg = "";        try {            Git git = Git.cloneRepository()                 .setURI(REMOTEREPOURI)                 .setCredentialsProvider(new UsernamePasswordCredentialsProvider(USER, PASSWORD))                 .setBranch("master")                 .setDirectory(new File(LOCALPATH)).call();            msg = "git init success!";        } catch (Exception e) {            msg = "git已经初始化!";        }        return msg;    }

建立本地git仓库 然后就是拉取远程的文件了

//pull拉取远程仓库文件    public static boolean pullBranchToLocal(){        boolean resultFlag = false;        //git仓库地址        Git git;        try {            git = new Git(new FileRepository(LOCALGITFILE));            git.pull().setRemoteBranchName("master")               .setCredentialsProvder(new UsernamePasswordCredentialsProvider(USER,PASSWORD)).call();            resultFlag = true;        } catch (IOException | GitAPIException e) {            e.printStackTrace();        }        return resultFlag;        }

然后就是提交推送到git了

//提交git    public static boolean commitFiles() {        Git git = null;        try {            git = Git.open(new File(LOCALGITFILE));            AddCommand addCommand = git.add();        //add操作 add -A操作在jgit不知道怎么用 没有尝试出来 有兴趣的可以看下jgitAPI研究一下 欢迎留言            addCommand.addFilepattern(".").call();                        RmCommand rm=git.rm();            Status status=git.status().call();        //循环add missing 的文件 没研究出missing和remove的区别 就是删除的文件也要提交到git            Set
missing=status.getMissing(); for(String m : missing){ logger.info("missing files: "+m); rm.addFilepattern(m).call();           //每次需重新获取rm status 不然会报错 rm=git.rm(); status=git.status().call(); } //循环add remove 的文件 Set
removed=status.getRemoved(); for(String r : removed){ logger.info("removed files: "+r); rm.addFilepattern(r).call(); rm=git.rm(); status=git.status().call(); }        //提交 git.commit().setMessage("commit").call();        //推送 git.push().setCredentialsProvider(new UsernamePasswordCredentialsProvider(USER, PASSWORD)).call(); return true; } catch (Exception e) {
e.printStackTrace(); return false; } }

然后写个方法测试一下

public static void main(String[] args) {        setupRepo();        pullBranchToLocal();        commitFiles();    }

如有问题,欢迎留言

转载于:https://www.cnblogs.com/dreamsun/p/10545975.html

你可能感兴趣的文章
使用PowerShell收集多台服务器的性能计数器
查看>>
jquery 中一些 特殊方法 的特殊使用 一览表
查看>>
yuv rgb 像素格式1
查看>>
通过PHP扩展phpredis操作redis
查看>>
如何在Swift里用UnsafeMutablePointer
查看>>
UML类图和时序图
查看>>
内存拷贝
查看>>
c_str()
查看>>
install ubuntu tweak on ubuntu lts 10.04,this software is created by zhouding
查看>>
Objective-C中一种消息处理方法performSelector: withObject:
查看>>
JSP实现分页显示
查看>>
关注HTML5安全
查看>>
ios中Pldatabase的用法(4)
查看>>
Leetcode: Search in Rotated Sorted Array
查看>>
windows上配置git
查看>>
新型智能芯片nxp----嗯质朴
查看>>
使用事件捕获实时捕获img是否加载完毕, 实现iframe内容高度自动适应
查看>>
Mysql 分组排序
查看>>
论文撰写及排版流程总结
查看>>
Underscore.js (1.7.0)-函数预览
查看>>