改变了多少文件?
How many files have changed?
我想知道我在存储库中更改了多少文件。
目前我用的是这个命令,但是太慢了:
n = `git diff --name-only HEAD | wc -l | tr -d '[[:space:]]'`
我写了一个脚本,为每个子目录执行这个命令。每个子目录都是一个 git-repo。有了这个,我可以很容易地看到哪些回购有我需要提交的更改。
如何获得相同的信息,但速度更快?上面的命令需要很长时间才能执行,对于许多回购来说这是一个问题。
git status
似乎更快 (YMMV):
git status --porcelain | grep -cv '^??'
如果您只对查找存储库是否有更改(而不是确切计数)感兴趣,这可能是我所知道的最快的:
git diff --quiet --exit-code
如果有变化return1
,否则0
我知道你原来的问题提到了提交的数量,但如果你只想看到变化,这可能就足够了。
要计算已修改文件的数量,我会使用 git ls-files
:
git ls-files -m -z | awk -v RS='[=10=]' 'END { print NR }'
-m
显示修改后的文件,-z
以空字符 [=15=]
终止每个文件名。然后使用 awk 来计算记录数。这是最安全的选项,因为它可以正确处理包含换行符等奇怪字符的文件名。
如果您不担心这一点,您可以采用这种稍微简单一些的方法:
git ls-files -m | wc -l
我想知道我在存储库中更改了多少文件。
目前我用的是这个命令,但是太慢了:
n = `git diff --name-only HEAD | wc -l | tr -d '[[:space:]]'`
我写了一个脚本,为每个子目录执行这个命令。每个子目录都是一个 git-repo。有了这个,我可以很容易地看到哪些回购有我需要提交的更改。
如何获得相同的信息,但速度更快?上面的命令需要很长时间才能执行,对于许多回购来说这是一个问题。
git status
似乎更快 (YMMV):
git status --porcelain | grep -cv '^??'
如果您只对查找存储库是否有更改(而不是确切计数)感兴趣,这可能是我所知道的最快的:
git diff --quiet --exit-code
如果有变化return1
,否则0
我知道你原来的问题提到了提交的数量,但如果你只想看到变化,这可能就足够了。
要计算已修改文件的数量,我会使用 git ls-files
:
git ls-files -m -z | awk -v RS='[=10=]' 'END { print NR }'
-m
显示修改后的文件,-z
以空字符 [=15=]
终止每个文件名。然后使用 awk 来计算记录数。这是最安全的选项,因为它可以正确处理包含换行符等奇怪字符的文件名。
如果您不担心这一点,您可以采用这种稍微简单一些的方法:
git ls-files -m | wc -l