JGit rebase 保留本地文件并获取冲突文件列表

JGit rebase keep local files and get conflict files list

我正在尝试从 origin/mybranch 变基 mybranch。我正在使用此代码:

git.pull().setRebase(true).setRemoteBranchName(branch).call();

执行此操作后,冲突文件将更新为

<<<<<<< Upstream, based on branch

但是没有冲突的本地更改会被存储库内容覆盖,即使我已经提交了本地更改。

如果我在命令提示符下尝试 运行 git 命令 "git rebase" 而不是调用此函数,本地文件不会更新,所以没问题。

后来我尝试了下面的link方法,

https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/RebaseToOriginMaster.java

InteractiveHandler handler = new InteractiveHandler() {
    @Override
    public void prepareSteps(List<RebaseTodoLine> steps) {
        for(RebaseTodoLine step : steps) {
            try {
                step.setAction(Action.EDIT);
            } catch (IllegalTodoFileModification e) {
                throw new IllegalStateException(e);
            }
        }
    }

    @Override
    public String modifyCommitMessage(String oldMessage) {
        return oldMessage;
    }
};
git.rebase().setUpstream("origin/"+branch).runInteractively(handler).call();

在此之后,我能够将我的本地更改保留在 rebase 上,但是冲突的文件现在被远程存储库值覆盖。

而且 RebaseResult 的 "conflicts list" 和 "failing path maps" 为空,因此我也找不到更新的文件。

我是不是做错了什么,还是 JGit 的问题。我也没有得到任何合适的文档。

如果您发现 git.pull().setRebase(true) 产生的结果与原生 Git 不同,您应该 file a bug report

请注意,您应该提供一个(失败的)测试用例来断言预期结果以及使用原生 git 采取的必要步骤。