有多少文件已更改?

时间:2015-10-12 11:10:29

标签: git bash scripting

我想知道我在存储库中更改了多少文件。

目前,我使用此命令,但速度太慢了:

n = `git diff --name-only HEAD | wc -l | tr -d '[[:space:]]'`

我编写了一个脚本,为每个子目录执行此命令。每个子目录都是一个git-repo。有了这个,我可以很容易地看到哪个repos有我需要提交的更改。

如何获得相同的信息,但速度更快?上面的命令需要花费大量的时间来执行,对于许多repos而言,这是一个问题。

3 个答案:

答案 0 :(得分:2)

要计算修改过的文件数量,我会选择git ls-files

git ls-files -m -z | awk -v RS='\0' 'END { print NR }'

-m显示已修改的文件,-z使用空字符\0终止每个文件名。然后使用Awk来计算记录数。这是最安全的选项,因为它正确处理包含奇怪字符(如换行符)的文件名。

如果你不关心这个问题,你可以采用这种稍微简单的方法:

git ls-files -m | wc -l

答案 1 :(得分:1)

git status似乎更快(YMMV):

git status --porcelain | grep -cv '^??'

答案 2 :(得分:1)

如果你只想知道回购是否有变化(不是确切的数量),这可能是我所知道的最快:

git diff --quiet --exit-code

如果有更改,它将返回1,否则会返回0

我知道您的原始问题提到了提交的数量,但如果您只想看到更改,这可能就足够了。