【发布时间】:2016-09-09 18:22:58
【问题描述】:
有很多很好的命令行 fu 的答案来查找更改(或更改统计信息),但我想找到相反的答案:自一个特定的提交?
我能找到的最接近的是:How to find which files have not changed since commit?,但我想知道有多少行(理想情况下:每个文件中)保持不变,而不是哪些文件。
所以,基本上:除了插入和删除之外,git diff --stat 可以输出 unchanged 行吗?
或者,我想 git ls-files、git blame 和一些 awk 魔术可能会解决问题,但我还没有完全弄清楚。 -- 例如,不是用最后一次更改的提交号标记每一行,我可以让 git-blame 指示此更改是在给定提交之前还是之后发生的?再加上 grep 和 wc -l 这会让我到达那里。
【问题讨论】:
-
计算所有行并减去更改的行。
-
@fedorqui 原则上是的,是的,但是我在每个文件都完成此操作时遇到了麻烦(也许我只是使用了正确的命令......) - 例如,我可以计算所有行(每个文件)通过 git ls-files | xargs wc -l;我可以通过 git diff --numstat
HEAD 来计算更改的数量(每个文件),但是有没有一种连接两者的好方法? -
git blame
--date=raw 会给你一个原始形式的日期,可以很好地与 awk 配合使用。可以使用答案中显示的 rev-parse 技巧找到截止日期。