有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JGIT重复合并冲突空指针异常

我想问一下,关于下面的代码行,为什么会出现空指针异常。这是我不明白的Git相关的东西吗

refsideMerge=existingRepo.exactRef("refs/heads/sideMerge");
tmpMerge = git.merge();
tmpMerge.include(refsideMerge);
tmpMerge.setCommit(false);//dry run to get conflicting files
tmpMergeRes = tmpMerge.call();

Map allConflicts = tmpMergeRes.getConflicts();          
 for (Map.Entry<String,int[][]> entry : tmpMergeRes.getConflicts().entrySet()) {
 System.out.println("Key: " + entry.getKey());
  for(int[] arr : entry.getValue()) {
   System.out.println("value: " + Arrays.toString(arr));
  }
}

说明:

在反复运行此代码段后,我遇到了Nullpointer异常。 我想测试我的xml解析是否存在合并冲突,这就是为什么我需要处理重复的合并冲突。目前只有合并部分用于生成冲突

据我所知,它停在下面的一行

Map allConflicts = tmpMergeRes.getConflicts();

共 (1) 个答案

  1. # 1 楼答案

    因此,我找到了以下解释:

    基本上,无论何时运行git merge,它都会触及工作目录,即使它的干运行是作为其写入的there

    有两种可能的解决方案: FirstSecond

    目前,我将在试运行后重置头部。这是一个简单的解决方案,使用ResolveMerge的另一个解决方案会更好,但仍在研究如何做到这一点

    refsideMerge=existingRepo.exactRef("refs/heads/sideMerge");
    tmpMerge = git.merge();
    tmpMerge.include(refsideMerge);
    tmpMerge.setCommit(false);//dry run to get conflicting files
    tmpMergeRes = tmpMerge.call();
    
    Map allConflicts = tmpMergeRes.getConflicts();          
     for (Map.Entry<String,int[][]> entry : tmpMergeRes.getConflicts().entrySet()) {
     System.out.println("Key: " + entry.getKey());
      for(int[] arr : entry.getValue()) {
       System.out.println("value: " + Arrays.toString(arr));
      }
    }
    git.reset().setMode(ResetType.HARD).call();