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=
选项进行尝试。例子: