以下bash脚本(可在StackOverflow上的其他位置找到)可以计算自上次提交以来git repo中更改的单词:
# https://stackoverflow.com/questions/2874318/quantifying-the-amount-of-change-in-a-git-diff
function git_words_added {
revision=${1:-origin/master}
git diff --word-diff=porcelain $revision | \
grep -e "^+[^+]" | \
wc -w | \
xargs
}
function git_words_removed {
revision=${1:-origin/master}
git diff --word-diff=porcelain $revision | \
grep -e "^-[^-]" | \
wc -w | \
xargs
}
function words_changed() {
echo "(+"$(git_words_added $1)", -"$(git_words_removed $1)")"
}
words_changed
命令非常便于检查日常写作进度。
问题:前面的命令仅显示工作库和最后一次提交之间的区别。有没有一种方法可以显示一段时间(例如24小时)内所有提交和未分段更改之间的 aggregate 差异?因此,例如,如果23小时前我添加了10个单词并删除了10个单词(并提交),然后现在我又添加了10个单词并删除另外10个单词(但尚未提交或登台)更改),如何调整脚本以显示已更改的(+20, -20)
个单词,而不只是(+10, -10)
?
(我忽略了评估更改是否重叠并且假设它们是互斥的问题)。