在git仓库中找到最大提交(即提交大多数更改,例如计算为添加/删除行数的提交)的方法是什么?
请注意,我真的想要最大的提交,而不是最大的文件,所以git find fat commit在这里没有用.
max*_*max 11
你可以使用git log --format=format:"%H" --shortstat.它会输出类似的东西
b90c0895b90eb3a6d1528465f3b5d96a575dbda2
2 files changed, 32 insertions(+), 7 deletions(-)
642b5e1910e1c2134c278b97752dd73b601e8ddb
11 files changed, 835 insertions(+), 504 deletions(-)
// other commits skipped
Run Code Online (Sandbox Code Playgroud)
看起来像一个容易解析的文本.
小智 8
对于任何想要获得最大到最小提交的简单列表(按提交中所做的更改量)的人,我采用了@max的答案并对结果进行了解析和排序。
git log --format=format:"%H" --shortstat | perl -00 -ne 'my ($hash, $filesChanged, $insertions, $deletions) = $_ =~ /(?:[0-9a-f]+\n)*([0-9a-f]+)\n(?: (\d+) files? changed,)?(?: (\d+) insertions?...,?)?(?: (\d+) deletions?...)?/sg; print $hash, "\t", $insertions + $deletions, "\n"' | sort -k 2 -nr
Run Code Online (Sandbox Code Playgroud)
这需要所有提交,将每个提交的插入和删除数量加在一起,然后按从最高到最低的顺序对列表进行排序。要获得前十个最大的提交,请添加 | head -10到最后。