对于一些工作中的报告,我必须发送本月修改的文件,按类型分组。我一直在使用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
答案 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