Java JGit:如何压缩提交

Java JGit:如何压缩提交,java,git,jgit,squash,Java,Git,Jgit,Squash,关于如何使用JGit中的RebaseCommand、MergeCommand或任何其他命令挤压提交,您有什么建议吗?我找不到太多的例子,文档也不是很有帮助 一个简单的例子 我要压扁以下树: A-----B------C------D------E------F------G------H 在这一点上: A----Z-----H 其中Z是B、C、D、E、F和G的压缩提交 任何建议和有用的资源都将不胜感激。在命令行Git中,这将使用Git rebase-i…完成,然后为提交C、D、E、F和G选择

关于如何使用JGit中的
RebaseCommand
MergeCommand
或任何其他命令挤压提交,您有什么建议吗?我找不到太多的例子,文档也不是很有帮助

一个简单的例子

我要压扁以下树:

A-----B------C------D------E------F------G------H
在这一点上:

A----Z-----H
其中
Z
B
C
D
E
F
G
的压缩提交


任何建议和有用的资源都将不胜感激。

在命令行Git中,这将使用
Git rebase-i…
完成,然后为提交C、D、E、F和G选择“fixup”。使用fixup,Z将具有与B相同的提交消息

在JGit中,这可以使用RebaseCommand完成:

InteractiveHandler handler = new InteractiveHandler() {
    public void prepareSteps(List<RebaseTodoLine> steps) {
        // loop through steps and use setAction to change action
    }

    public String modifyCommitMessage(String oldMessage) {
        return oldMessage;
    }
};

Repository repo = FileRepositoryBuilder.create(gitDir);
Git git = Git.wrap(repo);
git.rebase().setUpstream(commitA).runInteractively(handler).call();
InteractiveHandler处理程序=新建InteractiveHandler(){
公共作废准备(列出步骤){
//循环执行步骤并使用setAction更改操作
}
公共字符串modifyCommitMessage(字符串oldMessage){
返回旧消息;
}
};
Repository repo=FileRepositoryBuilder.create(gitDir);
Git Git=Git.wrap(回购);
git.rebase().setUpstream(commitA).runInteractively(handler.call();

谢谢。虽然我在Google上找不到很多使用JGit的例子,但我发现Eclipse bug/patch报告是另一个很好的信息来源:下面是另一篇关于如何压缩不包含头部提交的提交的文章:关于缺少的示例:我试图在我的JGit cookbook中收集一些有用的片段