使用JGit无法退出REBASING_MERGE状态

时间:2018-03-06 09:21:26

标签: jgit

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

由于某种原因,某些任务使得仓库处于REBASING_MERGE状态。现在,下次处理任务时,我需要尝试“修复”存储库。我已经删除了潜在的冲突/修改/添加但回购仍处于REBASING_MERGE状态。

我已经尝试过提及there(中止合并),但无济于事 - 存储库状态仍然相同,我无法做到拉动:

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

有关如何使用JGit修复此问题的想法吗?

2 个答案:

答案 0 :(得分:1)

在继续之前,某些命令会检查从Repository::getRepositoryState返回的存储库状态。

如果REBASING_MRGE目录中有文件或目录rebase-merge,则返回.git状态。如果您确定可以安全地返回正常状态,则可以删除fire /目录。

答案 1 :(得分:0)

其实我在这里找到答案: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失败,因为最初没有冲突。