git - 有多少文件已更改?

标签 git bash scripting

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

目前,我使用这个命令,但它太慢了:

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

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

如何更快地获得相同的信息?上面的命令需要大量的时间来执行,对于许多存储库来说这是一个问题。

最佳答案

要获取已修改文件的数量,我会使用 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

关于git - 有多少文件已更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079647/

相关文章:

bash - 如何完成相对于另一个目录的文件名?

bash - 您可以使用 sed 将日期转换为 yyyy/mm/dd 吗?

javascript - 在没有浏览器的情况下执行 JavaScript?

scripting - Netsuite Suitescript可以修改文件柜中的文件吗?

java - 有没有用Java实现的语言?

git - 如何解决 "delete/modify"引起的 "git stash apply"冲突

git - 使用 Incron 和 Git 进行自动备份

git - 如何比较 Bitbucket 服务器中的两个提交

windows - Git 推送在 Windows 7 上的 “Writing Objects: 100%” 停止

python - 修改服务器上文件内容的最佳脚本