我如何计算在一个git存储库中所有文件中出现的总行数?

Git ls-files给了我一个由Git跟踪的文件列表。

我正在找一个命令来隐藏所有这些文件。类似的

git ls-files | [cat all these files] | wc -l

当前回答

git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

这显示了从空树到当前工作树的差异。它恰好计算当前工作树中的所有行。

要获得当前工作树中的数字,请执行以下操作:

git diff --shortstat `git hash-object -t tree /dev/null`

它会给你一个字符串,比如1770 files changed, 166776 insertions(+)。

其他回答

: | git mktree | git diff --shortstat --stdin

Or:

git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin
git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

这显示了从空树到当前工作树的差异。它恰好计算当前工作树中的所有行。

要获得当前工作树中的数字,请执行以下操作:

git diff --shortstat `git hash-object -t tree /dev/null`

它会给你一个字符串,比如1770 files changed, 166776 insertions(+)。

Carl Norum的答案假设没有带空格的文件,IFS的一个字符是制表符和换行符。解决方案是用NULL字节终止该行。

 git ls-files -z | xargs -0 cat | wc -l

github https://github.com/flosse/sloc上的这个工具可以以更描述性的方式提供输出。它将创建你的源代码的统计数据:

物理行 代码行数(源代码) 带有注释的行 单行注释 带有块注释的行 代码行与源代码和注释混淆 空行

从时钟1.68开始工作:

cloc——风险投资= git