Git日志显示按类型排序的用户修改文件

时间:2019-04-15 21:15:46

标签: git git-log

对于一些工作中的报告,我必须发送本月修改的文件,按类型分组。我一直在使用git log命令来显示文件名和状态,但是如果我也可以按文件扩展名对它进行排序,这将对我有帮助。
this answer开始,我必须:
git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sort -u

现在,我很困惑如何按文件名对该列表进行排序。

这是当前输出,但通常包含数十个文件:

M   package.json
M   src/app/spa/components/component1/comp1-tpl.html
M   src/app/spa/components/component1/comp1-component.ts
M   src/app/spa/components/component1/comp1-services.ts
M   src/app/spa/components/component1/comp1-services.spec.ts
A   src/app/spa/components/component2/comp2-tpl.html

3 个答案:

答案 0 :(得分:2)

通过“文件名”表示路径:

git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sort -k2

如果您的意思是没有任何父目录的名称:

git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | while read type path;do echo "$(basename $path) $type    $path";done | sort -u | cut -f2- -d' '

答案 1 :(得分:1)

我有个主意。在命令下面添加“ grep .ext”。对于结果,重定向文件中的输出。然后对其他扩展名执行相同的操作。最后,您将获得扩展名排序的全部文件。你明白我的主意吗? 对于您的示例,report.txt包含一个有序列表。

-> git log --no-merges --author =“ me” --after = {2019-03-31} --name-status --pretty = format:“” |排序-u | grep“ \ .html” >> report.txt

-> git log --no-merges --author =“ me” --after = {2019-03-31} --name-status --pretty = format:“” |排序-u | grep“ \ .json” >> report.txt

-> git log --no-merges --author =“ me” --after = {2019-03-31} --name-status --pretty = format:“” |排序-u | grep“ \ .ts” >> report.txt

答案 2 :(得分:1)

您可以在扩展名之前添加扩展名,

> git log --no-merges --author="me" --after={2019-03-31} --name-status --pretty=format:"" | sed -r 's|.*(\.[^.]+)$|\1\t&|;' | sort -u
.html   A   src/app/spa/components/component2/comp2-tpl.html
.html   M   src/app/spa/components/component1/comp1-tpl.html
.json   M   package.json
.ts     M   src/app/spa/components/component1/comp1-component.ts
.ts     M   src/app/spa/components/component1/comp1-services.spec.ts
.ts     M   src/app/spa/components/component1/comp1-services.ts