仅将名称与Git中的其他参数一起使用
我最近对一个包含90%空白更改的分支进行了一些更改。现在我想计算一下有多少文件收到了其他10%的更改。是否有一种方法可以在传递其他参数(如仅将名称与Git中的其他参数一起使用,git,count,diff,Git,Count,Diff,我最近对一个包含90%空白更改的分支进行了一些更改。现在我想计算一下有多少文件收到了其他10%的更改。是否有一种方法可以在传递其他参数(如--忽略空行)的同时git diffgit diff——仅限名称——忽略空行返回所有已更改文件的完整列表,而不是筛选列表。如果我省略了--name only,那么diff会显示我想要的确切更改,但我想要的只是文件列表,我不关心更改本身 谢谢 不幸的是,--name only和--name status都使用快捷方式:它们比较存储的树(名称和哈希ID),而不查看
--忽略空行)的同时git diff
git diff——仅限名称——忽略空行
返回所有已更改文件的完整列表,而不是筛选列表。如果我省略了--name only
,那么diff会显示我想要的确切更改,但我想要的只是文件列表,我不关心更改本身
谢谢 不幸的是,--name only
和--name status
都使用快捷方式:它们比较存储的树(名称和哈希ID),而不查看文件内容。1
您需要做的是使用带有空格选项的git diff
(或git show
),然后去掉除文件名以外的所有内容。例如:
$ git show | grep '^diff '
diff --git a/file1 b/file1
diff --git a/file2 b/file2
$ git show --ignore-blank-lines | grep '^diff '
diff --git a/file2 b/file2
稍加按摩(和/或使用--no prefix
)只会得到文件名,而没有A/
和b/
前缀:
$ git show --ignore-blank-lines --no-prefix | grep '^diff '
diff --git file2 file2
1如果启用了重命名检测,检测器将检查每个文件的内容。但是,它不使用空格选项,因此这根本不会影响结果。--name status
算法的其余部分继续只使用存储的散列。不幸的是,--name only
和--name status
都使用快捷方式:它们比较存储的树(名称和散列ID),而不查看文件内容。1
您需要做的是使用带有空格选项的git diff
(或git show
),然后去掉除文件名以外的所有内容。例如:
$ git show | grep '^diff '
diff --git a/file1 b/file1
diff --git a/file2 b/file2
$ git show --ignore-blank-lines | grep '^diff '
diff --git a/file2 b/file2
稍加按摩(和/或使用--no prefix
)只会得到文件名,而没有A/
和b/
前缀:
$ git show --ignore-blank-lines --no-prefix | grep '^diff '
diff --git file2 file2
1如果启用了重命名检测,检测器将检查每个文件的内容。但是,它不使用空格选项,因此这根本不会影响结果。--name status
算法的其余部分继续使用存储的散列。所有空格更改是否都与空行相关?否则,--ignore all space
可能更相关。这更像是一个示例,但交换ignore all space
仍然存在同样的问题。所有空格更改是否都与空行相关?否则,--忽略所有空格
可能更相关。这意味着更多的是一个示例,但交换忽略所有空格
仍然存在同样的问题。