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

时间:2016-06-25 11:44:59

标签: git rebase jgit

我正试图从原点/ mybranch中修改mybranch。我正在使用此代码:

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

执行此操作后,冲突文件将使用

等注释进行更新
  

<<<<<<<上游,基于分支

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

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

后来我尝试了以下链接方法,

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的“冲突列表”和“失败的路径映射”都为空,因此我无法找到更新的文件。

我在这里做错了什么或者是JGit的问题。我也没有得到任何适当的文档。

1 个答案:

答案 0 :(得分:0)

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

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