使用git日志获取代码行?
我发现了很多关于在一次提交中添加和删除多少行的问题……在我看来,答案也很多,其中最好的一个是: 但是,没有人对给定点处文件的总行数感兴趣-提交。 这是可能的还是我看错了方向 理想情况下,我希望:使用git日志获取代码行?,git,github,Git,Github,我发现了很多关于在一次提交中添加和删除多少行的问题……在我看来,答案也很多,其中最好的一个是: 但是,没有人对给定点处文件的总行数感兴趣-提交。 这是可能的还是我看错了方向 理想情况下,我希望: 文件X上添加的行数 在文件X上删除的行数 文件X的总行数 我需要这些信息来获取一些指标,并对产品随时间变化的方式进行统计分析 谢谢 如果您在Linux上或安装了Cygwin,您可以git checkout myfile,然后运行wc-l myfile进行统计分析,您可以查看以下步骤- 您可以使用gi
- 文件X上添加的行数
- 在文件X上删除的行数
- 文件X的总行数
谢谢 如果您在Linux上或安装了Cygwin,您可以
git checkout myfile
,然后运行wc-l myfile
进行统计分析,您可以查看以下步骤-
您可以使用git日志和一些shell fu
:
git log --shortstat --author "Aviv Ben-Yosef" --since "2 weeks ago" --until "1 week ago"
| grep "files\? changed"
| awk '{files+=$1; inserted+=$4; deleted+=$6} END
{print "files changed", files, "lines inserted:", inserted, "lines deleted:", deleted}'
说明:git log--shortstat
显示有关每次提交的简短统计信息,其中包括已更改文件、插入和删除行的数量。然后,我们可以筛选特定提交人(--作者“您的姓名”
)和时间范围(--从“2周前”--到“1周前”
)
现在,为了实际汇总统计数据,而不是每次提交时查看条目,我们需要编写一些shell脚本来完成这项工作。首先,我们使用grep仅过滤具有差异的线。这些线条如下所示:
8 files changed, 169 insertions(+), 81 deletions(-)
或者这个:
1 file changed, 4 insertions(+), 4 deletions(-)
然后,我们使用awk对这些行进行汇总:对于每一行,我们添加更改的文件(第一个字)、插入的文件(第四个字)和删除的文件(第六个字),然后在汇总之后打印它们
以下命令的输出应该相当容易发送到脚本,以合计总数:
git log --author="<authorname>" --oneline --shortstat
我们也有一个备选方案-
您可以使用生成统计信息。它有一个“作者”部分,其中包括前20位作者添加/删除的行数(按提交计数排名前20位)
编辑:还有一个问题我不确定我是否理解这个问题。你能举一个简单的例子说明你想要得到的结果吗?
git log--oneline--numstat-1
,48 25 450 foo/bar.py,其中添加了48行,删除了25行,总共450行文件我假设这是一次提交的数据?其目的是一次获取所有信息,而不是每次提交都要签出。谢谢你!!这仍然不能回答获取每个文件的总行数的问题,或者它可以??据我所知,它提供了提交数、添加行数和删除行数。如果我错了,请让我知道它具体在哪里指定了单个文件的总行数?只是更新了答案。您可以使用--numstat“它按文件而不是按行生成统计信息,但更易于解析”。让我知道这是否有帮助。可能只是我没有正确地陈述问题。您的上一个命令git log--author=“”--pretty=tformat:--numstat
工作起来很有魅力,但它仍然没有提供文件的总行数(我对获取整个文件的代码行感兴趣,而不仅仅是添加/删除)。;)
git log --author="<authorname>" --pretty=tformat: --numstat