Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用git日志获取代码行?_Git_Github - Fatal编程技术网

使用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