首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分辨出“`git log --[num\short]stat`‘来计数空行

如何分辨出“`git log --[num\short]stat`‘来计数空行
EN

Stack Overflow用户
提问于 2011-08-19 14:10:27
回答 2查看 1.1K关注 0票数 1

一般问题

我如何告诉git,当使用git log --stat时,它也应该在一个差异中计数空行

代码示例

代码语言:javascript
复制
git clone https://github.com/voldemort/voldemort.git
cd voldemort
git log --numstat -n 1 c21ad76 contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java
git show c21ad76 -- contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java

更多细节

在给定的示例中,git log --numstat声明提交c21ad76,该文件HadoopStoreBuilderReducer.java增加了25行,删除了22行。如果仔细查看该文件的diff输出(git show),可以看到实际上有30行添加和25行删除,这使得5添加了3删除的行有所不同。更仔细地看,添加的行中有5条空行,删除的行中有4条空行。

这种行为在git log --shortstatgit log --stat中是一样的。

在我看来,所有空行都是,而不是由git log --numstat计算的

如何用git计算每个提交中添加和删除的行数,包括空行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 11:42:56

上下文

对于相同的更改,有几个不同的(有效)修补程序。主要的区别是上下文行的使用。统一差异通常在每次更改之前和之后使用三行上下文。在内部,git (有时)使用零行上下文,这可能导致不同的更改行。

第一个解决方案:外部工具

正如@karl已经描述的那样,人们可以将git show的结果导入grep -Pc '^\+(?!\+)'grep -Pc '^-(?!-)'。有一个工具diffstat正是这样做的:

代码语言:javascript
复制
$git show c21ad76 -- contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java | diffstat
 HadoopStoreBuilderReducer.java |   57 +++++++++++++++++++++--------------------
 1 file changed, 30 insertions(+), 27 deletions(-)

第二种解决方案:为修补程序使用不同的上下文

可以配置git显示的输出修补程序。使用x的"-Ux“选项,可以指定上下文。

代码语言:javascript
复制
$git show -U0 c21ad76 -- contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java | diffstat
 HadoopStoreBuilderReducer.java |   47 +++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 22 deletions(-)

这与内部git log --numstat匹配,因为它使用0上下文计算stat。请注意,这种行为将在git版本1.7.7中发生变化。对于这个,numstat使用了3行上下文。

票数 2
EN

Stack Overflow用户

发布于 2011-08-19 14:59:33

我数了27次,加了30次。我不知道是否有办法用内部git做这件事,但这对我有用:

代码语言:javascript
复制
git show c21ad76 -- contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java | grep -Pc '^\+(?!\+)'
git show c21ad76 -- contrib/hadoop-store-builder/src/java/voldemort/store/readonly/mr/HadoopStoreBuilderReducer.java | grep -Pc '^-(?!-)'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7122833

复制
相关文章

相似问题

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