我正在使用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修复此问题的想法吗?
答案 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失败,因为最初没有冲突。