如何计算git中两次提交之间更改的行数?

 2020-01-04 06:17

遇到的问题:

有没有简单的方法来计算git中两次提交之间更改的行数? 我知道我可以做git diff并计算行数,但这似乎很乏味。 我也想知道如何做到这一点,包括仅在行数中自己提交。

解决方案:

解决方案一

您需要git diff--stat选项,或者如果您想在脚本中解析它,请使用--numstat选项。

 git diff --stat <commit-ish> <commit-ish> 

--stat生成合并后您经常看到的易于--stat的输出; --numstat产生了一个不错的表布局,脚本可以轻松地对其进行解释。

我以某种方式错过了您希望同时执行多个提交的操作-这是git log的任务。 罗恩·德维尔(Ron DeVera)谈到了这一点,但实际上您可以做的事比他提到的要多。 由于git log内部调用diff机制以打印请求的信息,因此您可以为它提供任何diff stat选项-不仅是--shortstat 您可能想使用的是:

 git log --author="Your name" --stat <commit1>..<commit2> 

但您也可以使用--numstat--shortstat git log还可以通过多种其他方式选择提交-查看文档 您可能会对--since (而不是指定提交范围,仅从上周开始选择提交)和--no-merges (合并提交实际上不会引入更改)之类的东西以及漂亮的输出选项( --pretty=oneline, short, medium, full... )。

这是从git日志中获取总更改而不是每次提交更改的一种方法(根据需要更改提交选择选项-这是您的提交,从commit1到commit2):

 git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}' 

(您必须让git log打印有关提交的一些标识信息;我随意选择了哈希,然后使用awk来仅选择具有三个字段的行,即具有stat信息的行)

解决方案二

对于懒惰者,请使用git log --stat

解决方案三

 git diff --shortstat 

仅提供更改和添加的行数。 这仅适用于未分段的更改。 与分支进行比较:

 git diff --shortstat some-branch 
阅读 610 次发布于 2020年01月04日
推荐阅读
为什么处理排序数组要比处理未排序数组快?

这是一段C ++代码,显示了一些非常特殊的行为。 出于某些奇怪的原因,奇迹般地对数据进行排序使代码快了将近六倍: #include #include #include int main() { // Generate data const unsigned arraySize = 32768; int da...

2019-12-20 阅读 10

如何撤消Git中的最新本地提交?

我不小心将错误的文件提交给Git ,但是我还没有将提交推送到服务器。 如何撤消本地存储库中的那些提交?

2019-12-20 阅读 12

如何在本地和远程删除Git分支?

我想在本地和远程删除分支。 尝试删除远程分支失败 $ git branch -d remotes/origin/bugfix error: branch 'remotes/origin/bugfix' not found. $ git branch -d origin/bugfix error: branch 'origin/bugfix' not found. $ git branch ...

2019-12-20 阅读 9

'git pull'和'git fetch'有什么区别?

主持人注意:鉴于此问题已经发布了67个答案 (其中一些已删除),请在发布另一个问题之前考虑您是否正在贡献新内容 。 git pull和git fetch什么区别?

2019-12-20 阅读 8

什么是正确的JSON内容类型?

我一直在弄乱JSON一段时间,只是将其作为文本推出,并没有伤害任何人(据我所知),但是我想正确地做事。 我已经看到许多所谓的JSON内容类型的“标准”: application/json application/x-javascript text/javascript text/x-javascript text/x-json 但是哪一个是正确的,还是最好的? 我发现在它们之间存在安全性和浏览...

2019-12-20 阅读 10

目录