首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何忽略git中的空行显示统计数?

如何忽略git中的空行显示统计数?
EN

Stack Overflow用户
提问于 2021-07-12 00:58:47
回答 1查看 208关注 0票数 1

我很好奇,是否可以通过忽略stats输出中的任何换行符来获得更改状态(#inserts/#deletes)?如果我使用--word-diff选项进行显式计数,并计算匹配行以进行添加(被{+...+}包围)或删除(被[-...-]包围),则计数与stat的输出不匹配。

看起来,git显示的统计数据包括插入/删除的空行,并且可以大大夸大它们的计数。

我尝试了--ignore-blank-lines标志和其他ignore-*标志,但都没有结果。

例如:

代码语言:javascript
运行
复制
git show --shortstat --format= abcd1234
 17 files changed, 471 insertions(+), 392 deletions(-)

如果我这样做手动的基于word-diff的计数,那么插入的数量就会低得多:

代码语言:javascript
运行
复制
git show abcd1234 --first-parent --unified=0 --word-diff --format= | egrep -v "^@|^diff|^new|^index|^---|^\+\+\+" | egrep "{\+.*\+}$" | wc -l

这给了402。重复删除我得到332。无论是小于471个插入项还是392个插入项,shortstat的输出都可以通过忽略空白行来“匹配”计数?如果我不忽略空行,计数就会匹配得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-12 07:13:29

--word-diff和规则的“线差”是不同的算法。

您无法保证“修改行”的计数将匹配。

除此之外:

stat选项(--stat--numstat--shortstat)与git diffgit show的空格diff选项(例如--ignore-blank-lines-b | --ignore-space-change-w | --ignore-all-space)相结合:

代码语言:javascript
运行
复制
# will only count lines with non trivial changes :
git show -b --shortstat

关于这两种算法的区别,

作为一个简单的例子,以:

代码语言:javascript
运行
复制
# fileA                     # fileB
a line a line a line        line a line a line a
a line a line a line        line a line a line a
a line a line a line        line a line a line a
a line a line a line        line a line a line a
a line a line a line        line a line a line a

“逐行”:您必须删除fileA中的所有行才能将其更改为fileB,此修补程序的stat为5 insertions, 5 deletions

代码语言:javascript
运行
复制
$ git diff --no-index fileA fileB
diff --git a/fileA b/fileB
index 38ef89845..f417ca808 100644
--- a/fileA
+++ b/fileB
@@ -1,5 +1,5 @@
-a line a line a line
-a line a line a line
-a line a line a line
-a line a line a line
-a line a line a line
+line a line a line a
+line a line a line a
+line a line a line a
+line a line a line a
+line a line a line a

“言外之意”:您只需删除fileA中的第一个a,并在fileB末尾添加一个额外的a,您的"grep“命令将计算1 insertion, 1 deletion

代码语言:javascript
运行
复制
$ git diff --word-diff --no-index fileA fileB
diff --git a/fileA b/fileB
index 38ef89845..f417ca808 100644
--- a/fileA
+++ b/fileB
@@ -1,5 +1,5 @@
[-a-]line a line a line a
line a line a line a
line a line a line a
line a line a line a
line a line a line {+a+}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68340920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档