显示git跟踪文件中相对于特定日期更改的单词总数

显示git跟踪文件中相对于特定日期更改的单词总数,git,Git,问题:在git中,如何看待文件的当前状态与特定时间戳(即昨天下午2点)之前的最新提交之间的差异?我特别感兴趣的是获得全部更改的单词(类似于全部更改的行+/-) 用例。我所追求的用例是能够跟踪我相对于某个日期的写作进度。在写作中,进度单位通常是“文字变更”,而不是“行变更”(StackOverflow上的其他帖子包括行变更,但文字未变更) 示例。例如,如果我从昨天下午2点开始在file.txt中添加了200个单词,并删除了100个单词,我希望这个命令的结果类似于“+200/-100”。Git不跟踪

问题:在git中,如何看待文件的当前状态与特定时间戳(即昨天下午2点)之前的最新提交之间的差异?我特别感兴趣的是获得全部更改的单词(类似于全部更改的行+/-)

用例。我所追求的用例是能够跟踪我相对于某个日期的写作进度。在写作中,进度单位通常是“文字变更”,而不是“行变更”(StackOverflow上的其他帖子包括行变更,但文字未变更)


示例。例如,如果我从昨天下午2点开始在file.txt中添加了200个单词,并删除了100个单词,我希望这个命令的结果类似于“+200/-100”。

Git不跟踪单词,只跟踪行。您仍然可以通过一些工作来获得两次提交之间文件中的字数差异,但是(据我所知)没有简单的方法来获得添加和删除的字数

如果要将文件中的字数与昨天和现在进行比较,可以使用以下Bash脚本(将文件名作为第一个参数传递):

if[-z“$1”];然后
echo“传递要比较的文件”
出口1
fi
orig_branch=“$(git符号参考——短-q头)”
如果[-z“$orig_分行”];然后#头脱落
orig_branch=“$(git版本解析头)”
fi
words_now=$(wc-w“$1”| cut-d'-f1)
git签出“@{昨天}”
单词_then=$(wc-w“$1”| cut-d'-f1)
printf“%+d\n”$((words\u now-words\u then))#打印类似“+10”或“-42”的内容
git签出“$orig_分行”
注意:如果运行此操作时工作目录变脏,则可能会出现问题。最好先
git stash保存更改
,然后
git stash pop
保存更改


要获得Git为行提供的添加/删除计数,我想您可能可以将每行输入一个单词,然后区分这两个文件。

可能重复@phd:That post讨论如何获得“更改的行数”;我的帖子讨论了“全部更改的单词”。
wc-w
吐出了一个数字和一个文件名,这导致这个脚本出错。你知道怎么解决这个问题吗?另外:我想你应该在这个脚本的末尾签出你以前的分支。哎呀,这就是我在发布答案之前没有测试答案的结果:P我已经更新了答案来解决这个问题。事后检查前一个分支比听起来更难,但我也添加了这一点。