JGit:如何压缩提交

时间:2014-04-08 18:24:24

标签: java git jgit squash

有关如何在JGit中使用RebaseCommandMergeCommand或任何其他命令来压缩提交的任何建议?我找不到很多例子,文档也没什么帮助。

一个简单的例子

我想压缩下面的树:

A-----B------C------D------E------F------G------H

进入这一个:

A----Z-----H

其中ZBCDEFG的压缩提交。

赞赏任何建议和有用的资源。

1 个答案:

答案 0 :(得分:7)

在命令行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();