利用Java操作Git获取分支的内容
/**
public static String getContentWithFile(String gitRoot, final String branchName, String fileName) throws Exception { final Git git = Git.open(new File(gitRoot)); Repository repository = git.getRepository(); repository = git.getRepository(); RevWalk walk = new RevWalk(repository); Ref ref = repository.getRef(branchName); if (ref == null) { //获取远程分支 ref = repository.getRef(REF_REMOTES + branchName); } //异步pull ExecutorService executor = Executors.newCachedThreadPool(); FutureTask task = new FutureTask(new Callable() { public Boolean call() throws Exception { /*//创建分支 CreateBranchCommand createBranchCmd = git.branchCreate(); createBranchCmd.setStartPoint(REF_REMOTES + branchName).setName(branchName).call();*/ return git.pull().call().isSuccessful(); } }); executor.execute(task); ObjectId objId = ref.getObjectId(); RevCommit revCommit = walk.parseCommit(objId); RevTree revTree = revCommit.getTree(); TreeWalk treeWalk = TreeWalk.forPath(repository, fileName, revTree); //文件名错误 if (treeWalk == null) return null; ObjectId blobId = treeWalk.getObjectId(0); ObjectLoader loader = repository.open(blobId); byte[] bytes = loader.getBytes(); if (bytes != null) return new String(bytes); return null; }
转自网络
2019-03-10 16:22
知识点
相关教程
更多Git分支管理
Git分支管理 分类: GitHub 2014-10-11 21:42 334人阅读 评论(0) 收藏 举报 Git branch 分支管理 首先,我们创建dev分支,然后切换
Bug分支-git入门教程
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue -101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: $ git status# On branch dev# Ch
分支管理-git入门教程
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。 如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN! 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不
Feature分支-git入门教程
软件开发中,总有无穷无尽的新的功能要不断添加进来。 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。 现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。 于是准备开发: $ git checkout -b feature-
创建与合并分支-git入门教程
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当
分支管理策略-git入门教程
通常,合并分支时,如果可能,Git会用“Fast forward”模式,但这种模式下,删除分支后,会丢掉分支信息。 如果要强制禁用“Fast forward”模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。 下面我们实战一下--no-ff方式的merge: 首先,仍然创建并切换dev分支: $ git checkout -b devSwitched t
Java分支结构 – if…else/switch
Java分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。 Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含一个布尔表达式
如何获取iframe刷新后的内容
我在做一个基于iframe的文件上传,然后服务器写回一个JSON数据输出到隐藏的iframe里面,那么如何获取iframe里的内容呢? PS:我发现文件上传后,iframe有返回的JSON数据,但是无法在父页面获取(一直是空的)。 问题补充: 我用的jQuery,用 $("#iframe_id").contents().find("*:first")
怎么获取本站源码-安装git
本站使用的是git管理代码,获取源码的步骤如下: 安装git客户端: 客户端软件(Git-1.8.3-preview20130601.zip)可以到本站的百度云盘下载:http://pan.baidu.com/s/1o6EwjvO 如果你对乌龟客户端TortoiseGit-1.8.6.0-32bit.zip,同样可以下载:http://pan.baidu.com/s/1sjGrUHn 安装很简单
操作标签-git入门教程
如果标签打错了,也可以删除: $ git tag -d v0.1Deleted tag 'v0.1' (was e078af9) 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。 如果要推送某个标签到远程,使用命令git push origin tagname: $ git push origin v1.0Total 0 (delta 0), reused 0
利用SolrJ操作solr API完成index操作
使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了httpClient方法,来操作solr的API的。SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作。 1、 首先,你需要添加如下jar包 其中apache-solr-solrj-3.4.0.jar、slf4j-api-1.6.1.jar可以在下载的apache-solr-3
JAVA的solr操作实现(基本操作)
JAVA操作solr的实现其实很简单,但是很多细节要注意,在实际的开发中,很多人喜欢自己封装这些基础的方法以一个全新的“面貌”出现,其实都是一回事,操作熟了自然就会想到将一些实现功能用到的方法重新封装,这也是编程进阶的表现。 SolrJ的使用 SolrJ覆盖了solr的全部功能,下面将自己在实际开发中所使用的程序粘贴出来并适当加以解释,由于本人比较菜,代码书写不是那么的精练,还请见谅。 1、创建s
github(git.oschina.net)中的 README.md内容换行
不管是github,还是oschina的README.md文件,如果你输入内容直接回车,push到远程仓库后,在页面你会发现显示后是不会换行的,看起来特别恶心。 解决方法之一: 在每一行的末尾加上br换行标签 解决方法之二: 在要换行的末尾,输入空格两个以上 回车! 就这么简单,git真是个好东西
java 获取logback日志文件路径
在程序运行期间,读取logback日志文件内容进行特定业务操作,例如分析访问记录。通过LoggerFactory获取Logger上下文LoggerContext,再通过LoggerContext获取到Logger、Appender
最新教程
更多java线程状态详解(6种)
java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞
redis从库只读设置-redis集群管理
默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave. 127.0.0.1:6382> set k3 111 (error) READONLY You can't write against a read only slave. 如果你要开启从库
Netty环境配置
netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。
Netty基于流的传输处理
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据
Netty入门实例-使用POJO代替ByteBuf
使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。
Netty入门实例-时间服务器
Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现
Netty入门实例-编写服务器端程序
channelRead()处理程序方法实现如下
Netty开发环境配置
最新版本的Netty 4.x和JDK 1.6及更高版本
电商平台数据库设计
电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表
HttpClient 上传文件
我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。
MongoDB常用命令
查看当前使用的数据库 > db test 切换数据库 > use foobar switched to db foobar 插入文档 > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new
快速了解MongoDB【基本概念与体系结构】
什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
windows系统安装MongoDB
安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我
Spring boot整合MyBatis-Plus 之二:增删改查
基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baom
分布式ID生成器【snowflake雪花算法】
基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案