我正试图从原点/ mybranch中修改mybranch。我正在使用此代码:
git.pull().setRebase(true).setRemoteBranchName(branch).call();
执行此操作后,冲突文件将使用
等注释进行更新<<<<<<<上游,基于分支
但是,即使我已经提交了本地更改,但是没有冲突的本地更改也会被存储库内容覆盖。
如果我尝试在命令提示符下运行git命令“git rebase”,而不是调用此函数,本地文件不会更新,所以没关系。
后来我尝试了以下链接方法,
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的问题。我也没有得到任何适当的文档。
答案 0 :(得分:0)
如果您发现git.pull().setRebase(true)
产生的结果与原生Git不同,则应file a bug report。
请注意,您应提供一个(失败的)测试用例,该测试用例断言预期结果以及使用本机git采取的必要步骤。