无法使用 JGit 退出 REBASING_MERGE 状态

Can't get out of REBASING_MERGE state with JGit

我正在使用 JGit (v4.10.0.201712302008-r) 来自动执行与我们的 git 存储库交互的任务。

一些任务出于某种原因使回购处于 REBASING_MERGE 状态。现在,下次我处理任务时,我需要尝试 "repair" 存储库。我已经删除了潜在的 conflicted/modified/added 但回购协议仍处于 REBASING_MERGE 状态。

我已经尝试了提到的 (中止合并),但无济于事 - 存储库状态仍然相同,我无法进行拉取:

org.eclipse.jgit.api.errors.WrongRepositoryStateException: Cannot pull into a repository with state: REBASING_MERGE

知道如何使用 JGit 解决这个问题吗?

一些命令在继续之前检查 return 从 Repository::getRepositoryState 编辑的存储库状态。

如果 .git 目录中有文件或目录 rebase-merge,则 REBASING_MRGE 状态为 returned。如果您确定 return 到正常状态是安全的,您可以删除 fire/directory.

实际上我在这里找到了答案:https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/RebaseToOriginMaster.java#L78(我修改了代码):

 if(!result.getStatus().isSuccessful()) {
 // if rebasing stopped or failed, you can get back to the original state by running it with setOperation(RebaseCommand.Operation.ABORT)
    result = git.rebase().setUpstream("origin/master").setOperation(RebaseCommand.Operation.ABORT).call();
    System.out.println("Aborted rebase with state: " + result.getStatus() + ": " + result.getConflicts());
 }

我还需要理解为什么rebase会失败,因为最初没有冲突。