【发布时间】:2016-10-27 22:38:47
【问题描述】:
我正在尝试从 origin/mybranch 重新设置 mybranch 的基础。我正在使用此代码:
git.pull().setRebase(true).setRemoteBranchName(branch).call();
执行此操作后,冲突文件将使用 cmets 更新,例如
但即使我已提交本地更改,本地更改也会被存储库内容覆盖。
如果我尝试在命令提示符下运行 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 的问题。我也没有得到任何合适的文档。
【问题讨论】:
-
关于您的第二个问题(使用 InteractiveHandler 变基):如果没有独立的 sn-p,就不可能知道变基为什么会这样做。