我试图以编程方式解决合并冲突,即强制合并。 解决合并冲突后,如果我尝试提交,我会得到以下异常:
org.eclipse.jgit.api.errors.WrongRepositoryStateException:无法使用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());
}
答案 0 :(得分:0)
MergeCommand
并不意味着解决合并冲突。反之亦然,如果包含的引用无法在没有冲突的情况下合并,则会导致合并冲突。
PullCommand
是复合命令,首先从上游提取提交,然后尝试使用MergeCommand
合并它们。
为了以编程方式解决合并冲突,您需要相应地更改本地工作目录中的文件,将它们添加到索引,然后发出合并提交。
有关冲突文件的信息可在pullResult.getMergeResult()
中找到。可以使用常规CommitCommand
创建合并提交。