Git:如何从单个Git提交中获取+/-(插入和删除)的总数

4
我有一个git提交记录,需要获得插入和删除总数。
我知道"git show <SHA>"将显示有关我的提交的详细信息,但是我不确定如何仅从特定提交中获取更改总数。 git diff --stat <SHA1> <SHA2>也无法使用,因为我只能使用单个提交。
如果您有任何信息,请与我分享。
3个回答

12

你仍然可以使用git diff --stat命令:

git diff --stat <SHA>~ <SHA>
# or, for a global total only:
git diff --shortstat <SHA>~ <SHA>
~指的是<SHA>的直接父级。您仅使用了一个<SHA>:提交的<SHA>,以及其直接父级<SHA>~

例如:

C:\Users\vonc\prog\git\git>git diff --stat e646ab9cf83025e1000db6ec3c1716f978b099f2~ e646ab9cf83025e1000db6ec3c1716f978b099f2
 po/TEAMS    |    8 +-
 po/ca.po    | 3949 ++++++++++++++++++++++++++++++-------------------------
 po/de.po    | 3776 +++++++++++++++++++++++++++++-----------------------
 po/fr.po    | 3746 +++++++++++++++++++++++++++++-----------------------
 po/git.pot  | 3547 +++++++++++++++++++++++++++----------------------
 po/sv.po    | 3723 +++++++++++++++++++++++++++++-----------------------
 po/vi.po    | 3762 +++++++++++++++++++++++++++++-----------------------
 po/zh_CN.po | 4217 +++++++++++++++++++++++++++++++++--------------------------
 8 files changed, 15007 insertions(+), 11721 deletions(-)

仅针对总数:

C:\Users\vonc\prog\git\git>git diff --shortstat e646ab9cf83025e1000db6ec3c1716f978b099f2~ e646ab9cf83025e1000db6ec3c1716f978b099f2
 8 files changed, 15007 insertions(+), 11721 deletions(-)

我应该只使用单个提交ID,没有其他提交ID可用于使用git diff --stat。 - Giri lekkala
2
@Girilekkala 没错:这就是我的答案所做的。 - VonC
致命错误:模糊参数'<hash>~':未知的修订版本或路径不在工作树中。我只有一个提交。 - Mark Evans
1
@MarkEvans 是的,需要2个提交。 - VonC

1
"

git show --stat $commitish是一个命令。不确定你为什么错过了它,因为你看到了其他的命令。

"

1

这是一个简短的脚本,您可以在终端中输入:

git config --global alias.total '!echo $(git log --author="$(git
 config user.name)" --no-merges --before=$(date "+%Y-%m-%dT00:00")  --reverse | grep commit | wc -l) commits, $(git log --author="$(
git config user.name)" --no-merges --before=$(date "+%Y-%m-%dT00:00")  --reverse --stat | grep -Eo "[0-9]{1,} files? changed" | grep
 -Eo "[0-9]{1,}" | awk "{ sum += \$1 } END { print sum }") files changed, $(git log --author="$(git config user.name)" --no-merges -
-before=$(date "+%Y-%m-%dT00:00")  --reverse --stat | grep -Eo "[0-9]{1,} insertions?" | grep -Eo "[0-9]{1,}" | awk "{ sum += \$1 }
END { print sum }") insertions and $(git log --author="$(git config user.name)" --no-merges --before=$(date "+%Y-%m-01T00:00")  --re
verse --stat | grep -Eo "[0-9]{1,} deletions?" | grep -Eo "[0-9]{1,}" | awk "{ sum += \$1 } END { print sum }") deletions'

使用方法如下:-
git total

所有的功劳归功于这篇好的博客文章:- http://helpfulsheep.com/2016-03-22-what-git-i-do-last-month/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接