JGit 中的存储库状态合并

Repository state Merging in JGit

我正在尝试以编程方式解决合并冲突,即强制合并。 解决合并冲突后,如果我尝试提交,我会得到以下异常:

org.eclipse.jgit.api.errors.WrongRepositoryStateException: Cannot commit into a repository with state: MERGING.

如何更改存储库状态或者我是否遗漏了什么。 代码片段:

if((RepositoryState.SAFE == pullCommand.getRepository().getRepositoryState())) {
  PullResult result = pullCommand.call();
  if(MergeStatus.CONFLICTING == result.getMergeResult().getMergeStatus()){

     mgCmd = git.merge();
     mgCmd.include(repo.getRef("refs/remotes/origin/development"));
     mgCmd.setStrategy(MergeStrategy.OURS);
     mgCmd.setCommit(true);
     res = mgCmd.call(); 
     System.out.println("Failing Path ==="+res.getFailingPaths());
     pullCommand.getRepository().resolve("C:\CODE\thin\thinclient\.git");
     if(res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
       System.out.println("Merge status=========+++"+res.getMergeStatus());
     }

MergeCommand 并不是为了解决合并冲突。反之亦然,如果被包含的ref(s)不能无冲突地合并,就会导致合并冲突。

PullCommand 是一个复合命令,它首先从上游获取提交,然后尝试使用 MergeCommand.

合并它们

为了以编程方式解决合并冲突,您需要相应地更改本地工作目录中的文件,将它们添加到索引中,然后发出 merge commit.

有关冲突文件的信息可以在 pullResult.getMergeResult() 中找到。可以使用常规 CommitCommand.

创建 merge commit