Git: 获取回购中未提交行的总数
Git: Getting total numbers of uncomitted lines in a repo
是否有命令仅获取当前 git 存储库中更改的 行 的总数。我想统计 已暂存和未暂存的 个文件。
这是我能得到的最接近的
$ git diff --cached --shortstat
1 file changed, 1 insertion(+), 1 deletion(-)
$ git diff --shortstat
1 file changed, 1 insertion(+)
但我必须执行两个命令然后解析(很容易出错,你永远不知道所有情况)结果以找到已更改的行的数量。
如果不是 git 命令,bash/zsh 函数也可以。
更新:
所以我的想法是在我的 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+=(+) } END {print a}'
fi
}
我正在添加添加和删除行的行,而不是获取它们的差异。这实质上意味着编辑的行显示为 2,但这样做涵盖了添加和删除两条不同行的情况,并且由于减法,我们得到 0 作为结果。
试试这个:
git diff --numstat | cut -d$'\t' -f 1 | paste -sd+ - | bc
这里的git diff --numstat
提供了每个文件的加减次数(以制表符分隔)。 cut
命令按制表符拆分字段,选择第一个字段(添加)。 paste
命令从数字列创建加法,bc
命令执行求和。以上为补充。您可以通过将 -f 1
替换为 -f 2
来进行减法。如果你想要加减法,试试:
git diff --numstat | cut -d$'\t' -f 1,2 | tr '\t' '+' | paste -sd+ - | bc
只是在使用 paste
之前使用 tr
在每一行上插入加号
怎么样:
{ git diff --cached --numstat; git diff --numstat; } | awk '{ a+=(-) } END {print a}'
--numstat
标志为您提供:
#added #deleted #filename
您需要 运行 对暂存文件和未暂存文件进行计算,然后通过管道传输至 awk
进行计算。它将 return 添加和删除的行的总和,因此如果删除的行多于添加的行,您将得到否定结果。
是否有命令仅获取当前 git 存储库中更改的 行 的总数。我想统计 已暂存和未暂存的 个文件。
这是我能得到的最接近的
$ git diff --cached --shortstat
1 file changed, 1 insertion(+), 1 deletion(-)
$ git diff --shortstat
1 file changed, 1 insertion(+)
但我必须执行两个命令然后解析(很容易出错,你永远不知道所有情况)结果以找到已更改的行的数量。
如果不是 git 命令,bash/zsh 函数也可以。
更新:
所以我的想法是在我的 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+=(+) } END {print a}'
fi
}
我正在添加添加和删除行的行,而不是获取它们的差异。这实质上意味着编辑的行显示为 2,但这样做涵盖了添加和删除两条不同行的情况,并且由于减法,我们得到 0 作为结果。
试试这个:
git diff --numstat | cut -d$'\t' -f 1 | paste -sd+ - | bc
这里的git diff --numstat
提供了每个文件的加减次数(以制表符分隔)。 cut
命令按制表符拆分字段,选择第一个字段(添加)。 paste
命令从数字列创建加法,bc
命令执行求和。以上为补充。您可以通过将 -f 1
替换为 -f 2
来进行减法。如果你想要加减法,试试:
git diff --numstat | cut -d$'\t' -f 1,2 | tr '\t' '+' | paste -sd+ - | bc
只是在使用 paste
tr
在每一行上插入加号
怎么样:
{ git diff --cached --numstat; git diff --numstat; } | awk '{ a+=(-) } END {print a}'
--numstat
标志为您提供:
#added #deleted #filename
您需要 运行 对暂存文件和未暂存文件进行计算,然后通过管道传输至 awk
进行计算。它将 return 添加和删除的行的总和,因此如果删除的行多于添加的行,您将得到否定结果。