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 Parsing for Merge Conflicts,这就是为什么我需要重复的 Merge Conflicts 来处理。目前只有 Merge 部分用于产生冲突。
据我所知,它停在下一行
Map allConflicts = tmpMergeRes.getConflicts();
解决方案
所以我为此找到了解释:
基本上,每当您运行 git merge 时,它都会触及工作目录,即使它的空运行是写在那里的。
现在我将在空运行后重置头部。这是一个简单的解决方案,使用 ResolveMerger 的另一个解决方案会更好,但仍在研究如何做到这一点。
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();
推荐阅读
- java - 使用整数和字符进行数组排序
- c++ - glUniform1i 没有效果
- java - 在用户输入的相关部分和数组之间找到匹配的最有效方法是什么?
- batch-file - 如何找到磁盘卷的名称,如果它等于一个变量,然后执行一些操作?
- python-2.7 - 使用给定类型的节点和权重随机子集大型网络
- javascript - 使用作为参数传递给 url 的 jsonld 数据加载 vue 应用程序
- python - 如何在 Django 应用程序中实现 Android 风格的权限?
- ios - 有谁知道为什么其他代码部分不能隐藏我的颜色选择器?
- php - 使用 Laravel 将 youtube-dl 输出流式传输到 S3
- c# - 从 LoginPath 中删除 ReturnUrl 参数