问题来源:最近在做一个项目,其中有一块需要用户上传代码到服务器中,然后分析用户所传的代码,传代码最直接的方式就是用户打个包上传,但是后期再分析代码的时候还要代码实现解压上传的代码,操作起来比较复杂。

解决方案

与小伙伴们讨论了下,是不是可以通过代码仓库来解决问题,于是上网找了找,发现Git操作是可以用JGit这个API来实现的,于是就选择了让用户直接给一个Github Repository的链接,不仅能让系统自动下载代码,还省去了解压步骤。

JGit

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

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

代替

git commit -m "First commit"

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

JGit示例

Java实现git clone操作,参考代码如下:

import java.io.File;

import org.eclipse.jgit.api.CloneCommand;

import org.eclipse.jgit.api.Git;

public class JGitUtil {

public static String cloneRepository(String url,String localPath)

{

try{

System.out.println("开始下载......");

CloneCommand cc = Git.cloneRepository().setURI(url);

cc.setDirectory(new File(localPath)).call();

System.out.println("下载完成......");

return "success";

}catch(Exception e)

{

e.printStackTrace();

return "error";

}

}

public static void main(String[] args)

{

String localPath = "/Users/XXX/Desktop/GitTest";

String url = "https://github.com/XXX/python3-webapp.git";

cloneRepository(url,localPath);

}

}

注意点:在使用JGit这个JAR包时,是依赖其他JAR包的;列举如下:

slf4j-api-1.7.9.jar

slf4j-log4j12-1.7.9.jar

log4j-1.2.17.jar

jsch-0.1.54.jar

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

java代码操作git_JGit--实现Git命令操作的Java API相关推荐

  1. git代码托管 · 操作举例: “git bash here ”(全程操作讲解) - git命令篇

    如何通过git进行代码托管?怎么操作?全程讲解说明,以git bash here为例. git使用案例:git代码托管: "git bash here "(全程操作讲解) 代码托管 ...

  2. VSCode自定义代码片段15——git命令操作一个完整流程

    git命令操作一个完整流程 {// git'command// 15 如何自定义用户代码片段:VSCode =>左下角设置 =>用户代码片段 => 新建全局代码片段文件... =&g ...

  3. git 命令操作总结

    git 命令操作总结 git: 分布式版本控制工具 (项目代码的维护管理 以及 团队协作开发,项目的历史版本穿梭 互相分享共享) GitHub 平台 全球国际化平台网站: GitHub.com 程序员 ...

  4. java代码对数据库数据的CRUD操作

    java代码对数据库数据的CRUD操作 前言 一.CRUD.JDBC是什么? 二.操作步骤 1.连接mqsql数据库.加载数据库驱动 2.对数据库中的表进行增.删.改.查 总结 前言 对于刚刚学习完J ...

  5. java开发中常用的Git命令详解

    java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...

  6. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令

    这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...

  7. git 命令操作手册大全

    Desc: .git 是工作区的根目录,通过.git 定位版本库,shell 命令和 Linux 中一样.pull = fetch + merge,cat .git/config查看本地分支和远程分支 ...

  8. Git命令大全或者使用Git命令操作也是Git命令总结

    Git的学习总结 学习Git的网站为: https://learngitbranching.js.org  闯关形式的学习方法,试用与电脑操作,手机端体验可能不佳 学习过程中会不断的进行提示,演示,然 ...

  9. source tree ui操作对应的git命令

    UI操作的核心操作和我们平时用到git命令都一样,只是增加了一些参数,这些参数都是什么呢?下边时我最近用到的一些操作所对应的git命令,希望对大家有所帮助. 1. 获取: git -c diff.mn ...

最新文章

  1. 今天開始學習silverlight了
  2. 所谓移动IP是指(58);实现移动IP的关键技术是(59)。【答案】D B
  3. It is a distutils installed project and thus we cannot accurately
  4. C# Web实时消息后台服务器推送技术---GoEasy
  5. 中科院的java_java 中调用中科院分词系统
  6. 如何使ArrayList 线程安全
  7. python实训总结万能版3000字_实训总结万能版2000字范文五篇
  8. Python之数据类型总结
  9. 第二章 Java多线程入门类和接口
  10. 2018.10.01 NOIP模拟 卡牌游戏(贪心)
  11. python监控网页_【小白教程】Python3监控网页
  12. 第11章 Docker 中 Gitlab 的安装与配置
  13. Cookies的SameSite属性
  14. html编辑器如何设置滚动字幕,使用Axure RP为网页添加滚动字幕的具体操作步骤
  15. Linux 加密与解密应用
  16. SAP中采购订单修改触发重新审批的相关控制逻辑及测试
  17. 二级路由dhcp关闭连不上wifi_路由器的使用小技巧!
  18. 【学习OpenCV4】图像金字塔总结
  19. Page Visibility(页面可见性) API介绍、微拓展
  20. Mysql索引Hash和BTree的区别

热门文章

  1. x9此计算机上没有hasp_mastercam x9安装步骤
  2. 数据变金矿:一文读懂序列模型(附用例)
  3. MySQL , MHA , Haproxy 配置
  4. workerman源码分析之启动过程
  5. python 的文件读写方法:read readline readlines wirte   writelines
  6. Android如何使用读写cookie的方法
  7. Struts1.x系列教程(4):标签库概述与安装
  8. 数据库字段命名及设计规范
  9. Windows XP鲜为人知的70招
  10. 程序员:请你不要对业务「置之不理」