Java 使用jgit从旧提交创建新提交?

Java 使用jgit从旧提交创建新提交?,java,git,github,gitlab,jgit,Java,Git,Github,Gitlab,Jgit,我想将文件还原到同一主分支中的给定提交。我已经为此创建了临时分支更改,但仍然没有成功。我只希望从旧提交id进行更改。我不希望合并当前和旧提交更改,只希望合并旧提交更改,然后将其作为新提交提交 Repository repository = new FileRepository("E:" + "/.git"); Git gitObj = new Git(repository); // create changes branch Ref changes = gitObj.branchCreate(

我想将文件还原到同一主分支中的给定提交。我已经为此创建了临时分支更改,但仍然没有成功。我只希望从旧提交id进行更改。我不希望合并当前和旧提交更改,只希望合并旧提交更改,然后将其作为新提交提交

Repository repository = new FileRepository("E:" + "/.git");
Git gitObj = new Git(repository);

// create changes branch
Ref changes = gitObj.branchCreate().setName("changes").call();
System.out.println("result of branch create " + changes);

// checkout branch changes
Ref checkout = gitObj.checkout().setName("changes").call();
System.out.println("result of checkout " + checkout);

// apply that specific commit to this branch
CherryPickCommand cherryPickCommand = gitObj.cherryPick();
cherryPickCommand.include(getAnyObjectIdFromRevision(2));
cherryPickCommand.setStrategy(MergeStrategy.OURS);
cherryPickCommand.call();

// switch back to master branch
checkout = gitObj.checkout().setName("master").call();
System.out.println("master checkout result " + checkout);

//retrive the object id of the latest commit on branch
ObjectId mergeBase = repository.resolve("changes");

//actual merge
MergeResult merge = gitObj.merge().include(mergeBase).setMessage("merged changes").call();


System.out.println("Merge-Results for id: " + mergeBase + ": " + merge);
for (Map.Entry<String,int[][]> entry : merge.getConflicts().entrySet()) {
    System.out.println("Key: " + entry.getKey());
    for(int[] arr : entry.getValue()) {
        System.out.println("value: " + Arrays.toString(arr));
    }
}   

// delete branch
DeleteBranchCommand deleteBranchCommand = gitObj.branchDelete();
deleteBranchCommand.setBranchNames("changes");
deleteBranchCommand.setForce(true);
Repository Repository=newfilerepository(“E:“+”/.git”);
Git gitObj=新的Git(存储库);
//创建更改分支
Ref changes=gitObj.branchCreate().setName(“changes”).call();
System.out.println(“分支创建结果”+更改);
//签出分支更改
Ref checkout=gitObj.checkout().setName(“更改”).call();
System.out.println(“签出结果”+签出);
//将该特定提交应用于此分支
CherryPickCommand CherryPickCommand=gitObj.cherryPick();
include(getAnyObjectedFromRevision(2));
cherryPickCommand.setStrategy(MergeStrategy.OURS);
cherryPickCommand.call();
//切换回主分支
checkout=gitObj.checkout().setName(“master”).call();
System.out.println(“主检查结果”+检查);
//检索分支上最新提交的对象id
ObjectId mergeBase=repository.resolve(“更改”);
//实际合并
MergeResult merge=gitObj.merge().include(mergeBase).setMessage(“合并的更改”).call();
System.out.println(“id:+mergeBase+”:“+Merge的合并结果”);
对于(Map.Entry:merge.getConflicts().entrySet()){
System.out.println(“Key:+entry.getKey());
对于(int[]arr:entry.getValue()){
System.out.println(“值:“+Arrays.toString(arr));
}
}   
//删除分支
DeleteBranchCommand DeleteBranchCommand=gitObj.branchDelete();
deleteBranchCommand.setBranchNames(“变更”);
deleteBranchCommand.setForce(真);