有没有一个命令可以获取总数lines当前 git 存储库中已更改的内容。我想数数考虑分阶段和非分阶段 files.
这是我能得到的最接近的
$ git diff --cached --shortstat
1 file changed, 1 insertion(+), 1 deletion(-)
$ git diff --shortstat
1 file changed, 1 insertion(+)
但我必须执行两个命令,然后解析(很容易出错,你永远不知道所有情况)结果以找到数量lines已经改变了。
如果不是 git 命令,bash/zsh 函数也可以。
UPDATE:
所以我的想法是在我的 ZSH 提示符上跟踪未提交的行总数(显示 git 工作目录的大致脏程度),如下所示:
[~/dotfiles] (master) ✗ [192]
$ ...
所以感谢@arco444的答案,我稍微修改了一下,我现在有以下内容,只是如果有人想实现相同的目标
function git_change_count {
local IS_INSIDE_REPO=$(git rev-parse --is-inside-work-tree 2>/dev/null)
if [[ $IS_INSIDE_REPO == "true" ]]; then
{ git diff --cached --numstat; git diff --numstat; } | awk '{ a+=($1+$2) } END {print a}'
fi
}
我正在添加已添加和删除的行,而不是获取它们的差异。这本质上意味着编辑的行显示为 2,但这样做涵盖了添加和删除两条不同行的情况,并且由于减法,我们得到 0 结果。