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方法,
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 采取的必要步骤。
我正在尝试从 origin/mybranch 变基 mybranch。我正在使用此代码:
git.pull().setRebase(true).setRemoteBranchName(branch).call();
执行此操作后,冲突文件将更新为
<<<<<<< Upstream, based on branch
但是没有冲突的本地更改会被存储库内容覆盖,即使我已经提交了本地更改。
如果我在命令提示符下尝试 运行 git 命令 "git rebase" 而不是调用此函数,本地文件不会更新,所以没问题。
后来我尝试了下面的link方法,
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 采取的必要步骤。