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

Java JGIT重复合并冲突空指针异常,java,git,nullpointerexception,jgit,Java,Git,Nullpointerexception,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()

我想问一下,关于下面的代码行,为什么会出现空指针异常。这是我不明白的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));
  }
}

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

基本上,无论何时运行gitmerge,它都会接触工作目录,即使它的干运行是编写的

有两种可能的解决方案:

现在,我将在试运行后重置头部。这是一个简单的解决方案,使用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();
refsideMerge=existingRepo.exactRef(“refs/heads/sideMerge”);
tmpMerge=git.merge();
tmpMerge.include(refsideMerge);
tmpMerge.setCommit(false)//试运行以获取冲突文件
tmpMergeRes=tmpMerge.call();
Map allConflicts=tmpMergeRes.getConflicts();
对于(Map.Entry:tmpMergeRes.getConflicts().entrySet()){
System.out.println(“Key:+entry.getKey());
对于(int[]arr:entry.getValue()){
System.out.println(“值:“+Arrays.toString(arr));
}
}
git.reset().setMode(ResetType.HARD).call();
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();