无法使用 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会失败,因为最初没有冲突。
我正在使用 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会失败,因为最初没有冲突。