Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JGit在执行diff命令时返回的文件太多_Java_Git_Jgit - Fatal编程技术网

Java JGit在执行diff命令时返回的文件太多

Java JGit在执行diff命令时返回的文件太多,java,git,jgit,Java,Git,Jgit,我正试图针对另一个提交模拟git diff--name status。我按如下方式运行代码 ObjectReader ObjectReader=repository.newObjectReader(); CanonicalTreeParser OldTreeItemer=新CanonicalTreeParser(); 重置(objectReader,treeSha); Git-Git=新的Git(存储库); 列表差异=git.diff() .setShowNameAndStatusOnly(真)

我正试图针对另一个提交模拟git diff--name status。我按如下方式运行代码

ObjectReader ObjectReader=repository.newObjectReader();
CanonicalTreeParser OldTreeItemer=新CanonicalTreeParser();
重置(objectReader,treeSha);
Git-Git=新的Git(存储库);
列表差异=git.diff()
.setShowNameAndStatusOnly(真)
.setOldTree(oldTreeIter)
.call();
其中
treeSha
是我比较的提交树的SHA

我的问题是,这会返回一些未修改的文件,并且在针对同一提交运行
git diff
时未列出这些文件

我调查了一个文件,发现
gitls files-s
返回的哈希值与
git hash object
不同。不过,在工作树和我比较的提交中,各自的哈希值是相同的

我还发现
git.diff()
FileTreeIterator
设置为
newTree
,并且我的
CanonicalTreeParser
返回与
git ls files
相同的散列,而
FileTreeIterator
返回与
git hash object
相同的散列,这就是问题所在

我不知道为什么命令之间的哈希值不同,但即使如此,我的目标也不是使它们相同,而是通过编程获得与我从
git diff
中获得的文件相同的文件集,这意味着如果文件仅在工作树中修改,也应该列出它们。我不知道如何在不使用
FileTreeIterator
的情况下包含工作树