jgit依赖导入
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.5.0.201909110433-r</version>
</dependency>
打开本地git仓库
gitPath="F:\Code\test"
Git git = Git.open(new File(gitPath))
Repository repository = git.getRepository()
分别根据当前分支和master分支获取对象id
//方法1:根据分支名称获取
String currentBranch = repository.getBranch()
ObjectId branchObjId = repository.resolve(currentBranch)
//方法2:通过当前分支的引用获得
Ref ref= repository.findRef(currentBranch)
ObjectId objId = ref.getObjectId()
//获取master分支的objectID
ObjectId masterBranchObjId = repository.resolve("master")
分别获取当前分支和master分支的RevCommit
//当前分支
RevWalk revWalk = new RevWalk(repository)
RevCommit revCommit = revWalk.parseCommit(branchObjId)
//master分支
RevCommit revCommitMaster = revWalk.parseCommit(masterBranchObjId)
prepareTreeParser
//from the commit we can build the tree which allows us to construct the TreeParser
//当前分支信息
RevTree revTree = revCommit.getTree()
ObjectReader objReader = repository.newObjectReader()
CanonicalTreeParser currentBranchTreeParser = new CanonicalTreeParser()
currentBranchTreeParser.reset(objReader,revTree.getId())
//master分支信息
RevTree revTreeMaster = revCommitMaster.getTree()
CanonicalTreeParser masterBranchTreeParser = new CanonicalTreeParser()
masterBranchTreeParser.reset(objReader,revTreeMaster.getId())
revWalk.dispose()
调用diff获取差异信息
List<DiffEntry> diffEntryList = git.diff().setOldTree(masterBranchTreeParser).setNewTree(currentBranchTreeParser).setShowNameAndStatusOnly(true).call();