在GitHub存储库中,你可以看到“语言统计”,它显示了用某种语言编写的项目的百分比。但是,它不显示项目由多少行代码组成。通常,我想快速了解项目的规模和复杂性,而代码行数可以给人留下良好的第一印象。500行代码意味着一个相对简单的项目,10万行代码意味着一个非常大/复杂的项目。

那么,是否有可能从GitHub存储库中获得以各种语言编写的代码行,最好不克隆它?


“计算git存储库中的行数”问题询问如何计算本地git存储库中的代码行数,但是:

你必须克隆这个项目,这可能是巨大的。例如,克隆Wine这样的项目需要很长时间。 你可以计算文件中不一定是代码的行数,比如i13n文件。 如果您只计算(例如)Ruby文件,那么您可能会错过大量其他语言的代码,比如JavaScript。您必须事先知道项目使用哪些语言。您还必须为项目使用的每种语言重复计数。

总而言之,这对于“快速检查项目规模”来说可能太费时了。


当前回答

您可以使用sourcegraph,这是一个开放源代码的代码搜索引擎。它可以连接到你的GitHub帐户,索引内容,然后在管理部分,你会看到索引的代码行数。

其他回答

盾牌。IO有一个徽章,可以在这里为您计算所有的行数。下面是一个计算Raycast扩展回购的例子:

从@Tgr的评论中,有一个在线工具: https://codetabs.com/count-loc/count-loc-online.html

你可以使用tokei:

cargo install tokei
git clone --depth 1 https://github.com/XAMPPRocky/tokei
tokei tokei/

输出:

===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 BASH                    4           48           30           10            8
 JSON                    1         1430         1430            0            0
 Shell                   1           49           38            1           10
 TOML                    2           78           65            4            9
-------------------------------------------------------------------------------
 Markdown                4         1410            0         1121          289
 |- JSON                 1           41           41            0            0
 |- Rust                 1           47           38            5            4
 |- Shell                1           19           16            0            3
 (Total)                           1517           95         1126          296
-------------------------------------------------------------------------------
 Rust                   19         3750         3123          119          508
 |- Markdown            12          358            5          302           51
 (Total)                           4108         3128          421          559
===============================================================================
 Total                  31         6765         4686         1255          824
===============================================================================

Tokei支持徽章:

数线

[![](https://tokei.rs/b1/github/XAMPPRocky/tokei)](https://github.com/XAMPPRocky/tokei)

默认情况下,徽章将显示回购的LoC(代码行),您也可以指定为它显示一个不同的类别,通过使用?category=查询字符串。它可以是代码、空格、文件、行、注释。

计算文件

[![](https://tokei.rs/b1/github/XAMPPRocky/tokei?category=files)](https://github.com/XAMPPRocky/tokei)

目前不可能在Github.com或他们的api

我已经和客户支持谈过,并确认在github.com上不能这样做。不过,他们已经将这一建议传递给了Github团队,所以希望将来能实现。如果是这样,我一定会编辑这个答案。

与此同时,Rory O'Kane的答案是一个基于cloc和浅回购克隆的出色选择。

这里的答案没有一个符合我的要求。我只想使用现有的实用程序。下面的脚本将使用基本的实用程序:

Git GNU或BSD awk GNU或BSD sed Bash

获取添加到存储库的总行数(从添加的行中减去删除的行)。

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

获取已知源代码的指定文件类型(例如*.py文件或添加更多扩展名等)筛选的代码行。

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD -- *.{py,java,js} | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

4b825dc642cb6eb9a060e54bf8d69288fbee4904是Git中“空树”的id,它在每个存储库中始终可用。

来源:

我自己的脚本 如何获得Git差异的第一次提交? 有没有办法让git显示行增加,行改变和行删除?