Java git:列出在两次提交之间更改的文件,但不包括空格更改和中断更改

Java git:列出在两次提交之间更改的文件,但不包括空格更改和中断更改,java,git,git-diff,Java,Git,Git Diff,我想检索在两次提交之间真正更改的所有文件的列表。因此,我想忽略以下列表中唯一更改的文件: 添加/删除空行 仅包含添加/删除的*(可能还有空格)的行 行后更改缩进或添加空格 插入到任何行中的分隔符,例如: 之前: System.out.println("bar" + "foo"); 之后: System.out.println("bar" + "foo"); 这些变化应该被忽略。我知道这可能是一项非常复杂的任务,但我不认为我是第一个需要这种东西的人 更新 在我的评论中得到一些帮助

我想检索在两次提交之间真正更改的所有文件的列表。因此,我想忽略以下列表中唯一更改的文件:

  • 添加/删除空行
  • 仅包含添加/删除的
    *
    (可能还有空格)的行
  • 行后更改缩进或添加空格
  • 插入到任何行中的分隔符,例如:
之前:

System.out.println("bar" + "foo");
之后:

System.out.println("bar" + 
    "foo");
这些变化应该被忽略。我知道这可能是一项非常复杂的任务,但我不认为我是第一个需要这种东西的人

更新 在我的评论中得到一些帮助之后

git diff --word-diff-regex='^\*|[^[:space:]]' --ignore-space-at-eol --ignore-blank-lines --ignore-space-change --ignore-all-space hash1..hash2 --name-only

但我不太确定这是否真的满足了我的所有要求。有人能证实吗

这是我提出的唯一答案,但它不是很好,它是使以前提交格式的本地分支与新的相同,并以正常方式比较分支和头版本

git diff-w
?(但不会处理
*
)这确实提供了第一个bulletpoint的条件,但不提供其他三个bulletpoint中的任何一个。您尝试了什么?您应该首先看看我的最佳尝试是
git diff--仅限名称--忽略空行--忽略空行--忽略空格更改--忽略eol hash1 hash2的空格
,您可以使用
--word diff regex=
选项进行尝试。例子: